Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.89
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
#1

Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) - Objective-C

12.12.2013, 00:46. Просмотров 3402. Ответов 14
Метки нет (Все метки)

Друзья помогите решить задачку! Я в этом деле новичек, поэтому прошу не винить за глупые вопросы))

Итак, создаю приложение для iPhone в XCODE 5.0.2, язык программирования Objective C.

Пишу приложение с несколькими представлениями. В первом представлении (класс FirstViewController) создал текстовые поля для ввода пользователем входных данных.

FirstViewController.h
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#import <UIKit/UIKit.h>
#import "TIMBrain.h"
 
@interface TIMFirstViewController : UIViewController
 
@property (weak, nonatomic) IBOutlet UITextField *KursDoll_USA;
@property (weak, nonatomic) IBOutlet UITextField *PFR;
@property (weak, nonatomic) IBOutlet UITextField *FFOMS;
@property (weak, nonatomic) IBOutlet UITextField *TFOMS;
 
- (IBAction)textFieldDoneEditing:(id)sender;
- (IBAction)backgroundTap:(id)sender;
 
@end
FirstViewController.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#import "TIMFirstViewController.h"
 
@interface TIMFirstViewController ()
 
@end
 
@implementation TIMFirstViewController
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
//Прячем клавиатуру при нажатии кнопки done  на клавиатуре
- (IBAction)textFieldDoneEditing:(id)sender {
    [sender resignFirstResponder];
}
 
//Прячем клавиатуру при нажатии на любое свободное пространство на экране
- (IBAction)backgroundTap:(id)sender {
    TIMBrain *brain = [[TIMBrain alloc] init]; //Попытки передавать инициализированные данные
                                                                //в класс TIMBrain
 
    [self.KursDoll_USA resignFirstResponder];
    [self.PFR resignFirstResponder];
    [self.FFOMS resignFirstResponder];
    [self.TFOMS resignFirstResponder];
    NSLog(@"KURS = %@\n", self.KursDoll_USA.text);
    
    [brain setData]; //Попытки передавать инициализированные данные в класс TIMBrain
}
@end
Во втором представлении (класс SecondViewController) всего одна кнопка и одина метка.
SecondViewController.h
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
#import <UIKit/UIKit.h>
#import "TIMBrain.h"
 
@interface TIMSecondViewController : UIViewController {
    double strah;
}
 
@property (weak, nonatomic) IBOutlet UIButton *CountingData;
@property (weak, nonatomic) IBOutlet UILabel *labelStrahVznos;
- (IBAction)buttonPressed:(id)sender;
- (void)calcScreen;
 
@end
SecondViewController.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#import "TIMSecondViewController.h"
 
 
@interface TIMSecondViewController ()
 
@end
 
@implementation TIMSecondViewController
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
- (IBAction)buttonPressed:(id)sender {
    TIMBrain *brain = [[TIMBrain alloc] init];
    
    strah = brain.countStrahVznos;
   
    NSLog(@"STRAH_VZNOS = %f\n", strah);
    
    [self calcScreen];
}
 
- (void)calcScreen {
    
    NSString *str = [NSString stringWithFormat: @"%0.16g", strah];
    [_labelStrahVznos setText:str];
    
}
И создал один класс TIMBrain для вычислений:
TIMBrain.h
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
#import <Foundation/Foundation.h>
#import "TIMFirstViewController.h"
 
@interface TIMBrain : NSObject {
 
    double pfr, ffoms, tfoms, kurs, mrot, pfr_d, ffoms_d, tfoms_d, strah_vznos;
    
}
 
-(double)countStrahVznos;
-(void)setData;
 
@end
TIMBrain.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#import "TIMBrain.h"
 
@implementation TIMBrain
 
-(void)setData {
    TIMFirstViewController *fview = [[TIMFirstViewController alloc] init];
    
    kurs = [fview.KursDoll_USA.text doubleValue];
    pfr = [fview.PFR.text doubleValue];
    ffoms = [fview.FFOMS.text doubleValue];
    tfoms = [fview.TFOMS.text doubleValue];
    NSLog(@"KURS1 = %f\n", kurs);
}
 
-(double)countStrahVznos {
    TIMFirstViewController *fview = [[TIMFirstViewController alloc] init];
    
    NSLog(@"KURS2 = %f\n", kurs);
 
    kurs = [fview.KursDoll_USA.text doubleValue];
    mrot = 11700/kurs;
    NSLog(@"MROT = %f", mrot);
    pfr = [fview.PFR.text doubleValue];
    ffoms = [fview.FFOMS.text doubleValue];
    tfoms = [fview.TFOMS.text doubleValue];
    kurs = [fview.KursDoll_USA.text doubleValue];
    pfr_d = mrot * 12 * pfr;
    ffoms_d = mrot * 12 * ffoms;
    tfoms_d = mrot * 12 * ffoms;
    
    strah_vznos = pfr_d + ffoms_d + tfoms_d;
    
    NSLog(@"MROT = %f\nPFR = %f\nFFOMS = %f\nTFOMS = %f\nSTRAH_VZNOS = %f\n", mrot, pfr_d, ffoms_d, tfoms_d, strah_vznos);
    return strah_vznos;
}
 
@end
Логика программы такова:

В первом представлении пользователь вводит входные данные, затем переходит на второе представление и нажимает кнопку, которая обрабатывает эти данные и выводит результат в метку.

Вопрос заключается в следующем:
Как мне передать введенные данные (уже инициализированные) из класса FirstViewController в класс TIMBrain (в метод countStrahVznos), что бы метод мог обрабатывать эти данные? На данный момент в метод передаются неинициализированные переменные.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 00:46     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2)
Посмотрите здесь:

Рисование в Objective-C Objective-C
Objective-C Переход на Objective-C
Objective-C Консультации по objective-c
SystemWait в Objective C Objective-C
Objective-C Передача информации из текстбоксов одного окна в таблицу другого окна
Objective-C Строки в Objective-C
Objective-C Полиморфизм в Objective-C
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
27.12.2013, 19:01     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #2
Вообще конечно код который ты представил очень далек от идеала)) особенно мне понравилось про скрытие клавиатуры по тапу на сводобное место)) для этого есть класс жестов специальный или уже переопредели методы тача на вьюхе) что касается твоего вопроса, создай отдельный обьек, назови его как нибудь осмысленно и добавь ему поля которые тебе нужно передавать. Вот тебе пример
Objective-C
1
2
Calculate *calculate = [Calculate new]
calculate.kurs = ...
Потом в контроллере куда ты хочешь передать данные делаешь публичный метод что то в духе

Objective-C
1
2
3
-(void)setUpCalculate:(Calculate*)calculate
 
тоесть ты вызовешь его [viewController setUpCalculate:calculate]
Ну а где ты его вызовешь это уже зависит от твоей архитектуры. Как правило для смены контроллеров пилять отдельно navigationController или используют стандартный) так что дерзай
Dekio
Фрилансер
Эксперт C++
5819 / 1217 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
31.12.2013, 02:57     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #3
Цитата Сообщение от Dan_banan_ Посмотреть сообщение
что касается твоего вопроса, создай отдельный обьек, назови его как нибудь осмысленно и добавь ему поля которые тебе нужно передавать.
Что за ересь?

Используйте паттерн делегирования, создайте протокол и унаследуйте его классом приемником сообщения.
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
31.12.2013, 10:13     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #4
Цитата Сообщение от Dekio Посмотреть сообщение
Что за ересь?

Используйте паттерн делегирования, создайте протокол и унаследуйте его классом приемником сообщения.
Вообще это и имелось ввиду, прежде чем умничать посмотри на код и уровень того человека который его написал
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
21.01.2014, 17:33  [ТС]     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #5
Толко учусь, поэтому и код такой, а про скрытие клавиатуры начитался в книге "iOS 6 SDK. Разработка приложений для iPhone, iPad и iPod touch" Глава 4))

Скажите пожалуйста, может кто знает хорошие курсы по разработке программ на iPhone, iPad?

Добавлено через 6 минут
Вставил вот такой код:

Objective-C
1
2
TIMBrain *calc = [TIMBrain new];
calc.kurs = [self.KursDoll_USA.text doubleValue];
И Xcode сразу начал указывать на ошибку:

Property 'kurs' not found on object of type 'TIMBrain *'

При том, что в файле TIMBrain.h я объявил переменную kurs. Что не так сделал?
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
21.01.2014, 19:45     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #6
Цитата Сообщение от TimurZham Посмотреть сообщение
При том, что в файле TIMBrain.h я объявил переменную kurs. Что не так сделал?
Хотелось бы на это взглянуть.... переменную или свойство ?
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
21.01.2014, 20:33  [ТС]     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #7
Я тут подумал немного и сделал таким образом: в TIMBrain.m прописал функцию (сеттер, как мне кажется), а в FirsViewController.m вызываю функцию (сеттер) уже с инициализированными переменными. Ниже представлю код. Посмотрите пожалуйста, на сколько криво написанно и что стоит поправить?

TIMFirstViewController.m только функция backgroundTap //Прячем клавиатуру при нажатии на любое свободное пространство на экране
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
- (IBAction)backgroundTap:(id)sender {
    TIMBrain *brain = [[TIMBrain alloc] init];
    [self.StatusRez resignFirstResponder];
    [self.Area resignFirstResponder];
    [self.StavkaArendGross resignFirstResponder];
    [self.ExpluatRashod resignFirstResponder];
    [self.StoimostPokupki resignFirstResponder];
    [self.DKPN_pokupka resignFirstResponder];
    [self.DKPN_prodaja resignFirstResponder];
    [self.TempRostaStavok resignFirstResponder];
    [self.CapRateProdaja resignFirstResponder];
    [self.KursDoll_USA resignFirstResponder];
    [self.PFR resignFirstResponder];
    [self.FFOMS resignFirstResponder];
    [self.TFOMS resignFirstResponder];
//    NSLog(@"KURS = %@\n", self.KursDoll_USA.text);
       
// Вызов функции (сеттера), которая объявлена в файле TIMBrain.m 
    [brain setData:[self.Area.text doubleValue]
         stavkaArendGrossSet:[self.StavkaArendGross.text doubleValue]
            expluatRashodSet:[self.ExpluatRashod.text doubleValue]
          stoimostPokupkiSet:[self.StoimostPokupki.text doubleValue]
              dkpnPokupkaSet:[self.DKPN_pokupka.text doubleValue]
              dkpnProdajaSet:[self.DKPN_prodaja.text doubleValue]
          tempRostaStavokSet:[self.TempRostaStavok.text doubleValue]
           capRateProdajaSet:[self.CapRateProdaja.text doubleValue]
              kursDollSet:[self.KursDoll_USA.text doubleValue]
                   pfrSet:[self.PFR.text doubleValue]
                 ffomsSet:[self.FFOMS.text doubleValue]
                 tfomsSet:[self.TFOMS.text doubleValue]
             statusRezSet:self.StatusRez.text];
}
TIMBrain.m (Только функция-сеттер)
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-(void)setData:(double)areaSet
            stavkaArendGrossSet:(double)stavkaArendGrossSet
            expluatRashodSet:(double)expluatRashodSet
            stoimostPokupkiSet:(double)stoimostPokupkiSet
            dkpnPokupkaSet:(double)dkpnPokupkaSet
            dkpnProdajaSet:(double)dkpnProdajaSet
            tempRostaStavokSet:(double)tempRostaStavokSet
            capRateProdajaSet:(double)capRateProdajaSet
            kursDollSet:(double)kursDollSet
            pfrSet:(double)pfrSet
            ffomsSet:(double)ffomsSet
            tfomsSet:(double)tfomsSet
            statusRezSet:(NSString *)statusRezSet {
    
    statusRezident = statusRezSet;
    stavkaArendGross = stavkaArendGrossSet;
    expluatRashod = expluatRashodSet;
    stoimostPokupki = stoimostPokupkiSet;
    dkpnPokupka = dkpnPokupkaSet;
    dkpnProdaja = dkpnProdajaSet;
    tempRostaStavok = tempRostaStavokSet;
    capRateProdaja = capRateProdajaSet;
    kurs = kursDollSet;
    pfrProcent = pfrSet;
    ffomsProcent = ffomsSet;
    tfomsProcent = tfomsSet;
}
Вот так все работает)))
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.01.2014, 07:38     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #8
Цитата Сообщение от TimurZham Посмотреть сообщение
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-(void)setData:(double)areaSet
     stavkaArendGrossSet:(double)stavkaArendGrossSet
   expluatRashodSet:(double)expluatRashodSet
   stoimostPokupkiSet:(double)stoimostPokupkiSet
   dkpnPokupkaSet:(double)dkpnPokupkaSet
   dkpnProdajaSet:(double)dkpnProdajaSet
   tempRostaStavokSet:(double)tempRostaStavokSet
   capRateProdajaSet:(double)capRateProdajaSet
   kursDollSet:(double)kursDollSet
   pfrSet:(double)pfrSet
   ffomsSet:(double)ffomsSet
   tfomsSet:(double)tfomsSet
   statusRezSet:(NSString *)statusRezSet {
statusRezident = statusRezSet;
  stavkaArendGross = stavkaArendGrossSet;
  expluatRashod = expluatRashodSet;
  stoimostPokupki = stoimostPokupkiSet;
  dkpnPokupka = dkpnPokupkaSet;
  dkpnProdaja = dkpnProdajaSet;
  tempRostaStavok = tempRostaStavokSet;
  capRateProdaja = capRateProdajaSet;
  kurs = kursDollSet;
  pfrProcent = pfrSet;
  ffomsProcent = ffomsSet;
  tfomsProcent = tfomsSet;
}
ААаааай, нет, не делайте так. Что за жесть, как конструктор в жаве, ужас. Используйте свойства (@property), и используйте английский язык. Латиницей на русском с сокращениями - вам самому нравится это читать?

Цитата Сообщение от TimurZham Посмотреть сообщение
[self.StatusRez resignFirstResponder];
[self.Area resignFirstResponder];
[self.StavkaArendGross resignFirstResponder];
[self.ExpluatRashod resignFirstResponder];
[self.StoimostPokupki resignFirstResponder];
[self.DKPN_pokupka resignFirstResponder];
[self.DKPN_prodaja resignFirstResponder];
[self.TempRostaStavok resignFirstResponder];
[self.CapRateProdaja resignFirstResponder];
[self.KursDoll_USA resignFirstResponder];
[self.PFR resignFirstResponder];
[self.FFOMS resignFirstResponder];
[self.TFOMS resignFirstResponder];
Для этого сохраняйте ссылку на последний активный элемент, и его уже resign-те.
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
22.01.2014, 17:30     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #9
Цитата Сообщение от zulkis Посмотреть сообщение
Для этого сохраняйте ссылку на последний активный элемент, и его уже resign-те.
или корневой view послать endEditing
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.01.2014, 20:53     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #10
Venzo, замечательное замечание!
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
23.01.2014, 18:20  [ТС]     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #11
Цитата Сообщение от zulkis Посмотреть сообщение
ААаааай, нет, не делайте так. Что за жесть, как конструктор в жаве, ужас. Используйте свойства (@property), и используйте английский язык. Латиницей на русском с сокращениями - вам самому нравится это читать?


Для этого сохраняйте ссылку на последний активный элемент, и его уже resign-те.
Нет, не особо)) По этому и спрашиваю опытных товарищей:-)

А не могли бы вы приводить примеры, просто не совсем понятно, как именно должно все выглядеть.

Добавлено через 2 часа 18 минут
Попробовал сделать с использованием свойства (@property и @synthesize), вот что получилось:

TIMFirstViewController.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#import "TIMFirstViewController.h"
 
@interface TIMFirstViewController ()
 
@end
 
@implementation TIMFirstViewController
 
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
 
- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
 
- (IBAction)textFieldDoneEditing:(id)sender {
    TIMBrain *brain = [[TIMBrain alloc] init];
    [sender resignFirstResponder];
    brain.statusRezSet = self.StatusRez.text;
    [brain setData];
}
 
- (IBAction)backgroundTap:(id)sender {
    
    [self.StatusRez resignFirstResponder];
    [self.Area resignFirstResponder];
    [self.StavkaArendGross resignFirstResponder];
    [self.ExpluatRashod resignFirstResponder];
    [self.StoimostPokupki resignFirstResponder];
    [self.DKPN_pokupka resignFirstResponder];
    [self.DKPN_prodaja resignFirstResponder];
    [self.TempRostaStavok resignFirstResponder];
    [self.CapRateProdaja resignFirstResponder];
    [self.KursDoll_USA resignFirstResponder];
    [self.PFR resignFirstResponder];
    [self.FFOMS resignFirstResponder];
    [self.TFOMS resignFirstResponder];
    NSLog(@"KURS = %@\n", self.KursDoll_USA.text);
    
    TIMBrain *brain = [[TIMBrain alloc] init];
    brain.statusRezSet = self.StatusRez.text;
    brain.areaSet = [self.Area.text doubleValue];
    brain.stavkaArendGrossSet = [self.StavkaArendGross.text doubleValue];
    brain.expluatRashodSet = [self.ExpluatRashod.text doubleValue];
    brain.stoimostPokupkiSet = [self.StoimostPokupki.text doubleValue];
    brain.dkpnPokupkaSet = [self.DKPN_pokupka.text doubleValue];
    brain.dkpnProdajaSet = [self.DKPN_prodaja.text doubleValue];
    brain.tempRostaStavokSet = [self.TempRostaStavok.text doubleValue];
    brain.capRateProdajaSet = [self.CapRateProdaja.text doubleValue];
    brain.kursDollSet = [self.KursDoll_USA.text doubleValue];
    brain.pfrSet = [self.PFR.text doubleValue];
    brain.ffomsSet = [self.FFOMS.text doubleValue];
    brain.tfomsSet = [self.TFOMS.text doubleValue];
    [brain setData];
}
@end
TIMBrain.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#import "TIMBrain.h"
 
@implementation TIMBrain
 
@synthesize areaSet, stavkaArendGrossSet, expluatRashodSet, stoimostPokupkiSet, dkpnPokupkaSet, dkpnProdajaSet, tempRostaStavokSet, capRateProdajaSet, kursDollSet, pfrSet, ffomsSet, tfomsSet, statusRezSet;
 
NSString *statusRezident;
double kurs, pfrProcent, ffomsProcent, tfomsProcent, mrot, pfr_d, ffoms_d, tfoms_d, strah_vznos;
 
double stavkaArendGross, expluatRashod, stoimostPokupki, dkpnPokupka, dkpnProdaja, tempRostaStavok, capRateProdaja;
 
-(void)setData {
    statusRezident = statusRezSet;
    stavkaArendGross = stavkaArendGrossSet;
    expluatRashod = expluatRashodSet;
    stoimostPokupki = stoimostPokupkiSet;
    dkpnPokupka = dkpnPokupkaSet;
    dkpnProdaja = dkpnProdajaSet;
    tempRostaStavok = tempRostaStavokSet;
    capRateProdaja = capRateProdajaSet;
    kurs = kursDollSet;
    pfrProcent = pfrSet;
    ffomsProcent = ffomsSet;
    tfomsProcent = tfomsSet;
}
 
-(double)countStrahVznos {
    NSLog(@"KURS2 = %f\nSTATUS_REZ = %@\n", kurs, statusRezident);
    mrot = 11700/kurs;
    pfr_d = mrot * 12 * pfrProcent / 100;
    ffoms_d = mrot * 12 * ffomsProcent / 100;
    tfoms_d = mrot * 12 * ffomsProcent / 100;
    
    strah_vznos = pfr_d + ffoms_d + tfoms_d;
    
    NSLog(@"\nMROT = %f\nPFR = %f\nFFOMS = %f\nTFOMS = %f\nSTRAH_VZNOS = %f\n", mrot, pfr_d, ffoms_d, tfoms_d, strah_vznos);
    return strah_vznos;
}
@end
TIMBrain.h
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#import <Foundation/Foundation.h>
 
@interface TIMBrain : NSObject {
    double areaSet, stavkaArendGrossSet, expluatRashodSet, stoimostPokupkiSet, dkpnPokupkaSet, dkpnProdajaSet, tempRostaStavokSet, capRateProdajaSet, kursDollSet, pfrSet, ffomsSet, tfomsSet;
    NSString *statusRezSet;
}
 
@property NSString *statusRezSet;
@property double areaSet, stavkaArendGrossSet, expluatRashodSet, stoimostPokupkiSet, dkpnPokupkaSet, dkpnProdajaSet, tempRostaStavokSet, capRateProdajaSet, kursDollSet, pfrSet, ffomsSet, tfomsSet;
 
-(double)countStrahVznos;
-(void)setData;
 
@end
Так лучше?

P.S. Названия переменных я поменяю позже, сечас для меня важно понять сам алгоритм :-)
Всем Большое спасибо!
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
23.01.2014, 19:31     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #12
Не пойму логики метода setData ? Зачем это ?
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-(void)setData {
    statusRezident = statusRezSet;
    stavkaArendGross = stavkaArendGrossSet;
    expluatRashod = expluatRashodSet;
    stoimostPokupki = stoimostPokupkiSet;
    dkpnPokupka = dkpnPokupkaSet;
    dkpnProdaja = dkpnProdajaSet;
    tempRostaStavok = tempRostaStavokSet;
    capRateProdaja = capRateProdajaSet;
    kurs = kursDollSet;
    pfrProcent = pfrSet;
    ffomsProcent = ffomsSet;
    tfomsProcent = tfomsSet;
}
Если уж так хочется... то для этого есть директива @synthesize
Objective-C
1
@synthesize tfomsSet = tfomsProcent;
Хотя я бы удалил вот это
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-(void)setData {
    statusRezident = statusRezSet;
    stavkaArendGross = stavkaArendGrossSet;
    expluatRashod = expluatRashodSet;
    stoimostPokupki = stoimostPokupkiSet;
    dkpnPokupka = dkpnPokupkaSet;
    dkpnProdaja = dkpnProdajaSet;
    tempRostaStavok = tempRostaStavokSet;
    capRateProdaja = capRateProdajaSet;
    kurs = kursDollSet;
    pfrProcent = pfrSet;
    ffomsProcent = ffomsSet;
    tfomsProcent = tfomsSet;
}
Вот это:
Objective-C
1
2
@synthesize areaSet, stavkaArendGrossSet, expluatRashodSet, stoimostPokupkiSet, dkpnPokupkaSet, dkpnProdajaSet, tempRostaStavokSet, capRateProdajaSet, kursDollSet, pfrSet, ffomsSet, tfomsSet, statusRezSet;
double stavkaArendGross, expluatRashod, stoimostPokupki, dkpnPokupka, dkpnProdaja, tempRostaStavok, capRateProdaja;
Если нужен доступ к св-ам внутри класса исп нижнее подчеркивание: _propertyName

Добавлено через 3 минуты
+ не понятно что дальше происходит с классом TIMBrain в методах
Objective-C
1
2
- (IBAction)textFieldDoneEditing:(id)sender...
- (IBAction)backgroundTap:(id)sender...
Он в них просто создается и инициализируется... и все...
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
25.01.2014, 02:16  [ТС]     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #13
Препредставлю код последней версии в файле. Думаю будет легче понять мою логику. Дело в том, что данные инициализируются во FirstView только в тот момент, когда пользователь нажимает кнопку done или 'тапает' по бэкграунду (перед этим заполнив все text field входными данными), а расчет этих данных начинается только в SecondView при нажатии кнопки, А сам алгоритм расчета содержится в классе TIMBrain. Получается такая картина, если я не создаю метод (функцию) setData, которая после нажатия кнопки done или при 'тапе' по бэкграунду инициализирует данные в классе TIMBrain, то в классе TIMBrain входнsе данные не инициализируются и в итоге расчета получется полная ерунда, по сути функция setData мне нужна только для того, что бы перенести инициализированные данные из FirstView в класс TIMBrain, где ведутся все расчеты, которые вызываются в SecondView.

Друзя, спасибо вам за советы и подсказки! Большая просьба к вам, не могли бы вы ссылаться более конкретно на теоретические моменты и более подробно их описывать, дело в том, что я только учусь и стараюсь искать данные моменты в литературе! С вашей помощью мне будет гораздо легче самообразоваться, в следствии чего, я буду меньше задавать глупых вопросов. Спасибо за понимание и помощь!
Вложения
Тип файла: zip BrocerCalculator.xcodeproj.zip (30.3 Кб, 8 просмотров)
Dan_banan_
10 / 10 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
25.01.2014, 02:36     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #14
Почитай плиз книгу по программированию на objective с( Самая простая занимает около 200 страниц, за несколько вечером у тебя будет хотя бы представление как вообще надо писать код.
http://www.youtube.com/watch?v=LiupsRXIEa4 - видео
http://**********/q/8617 - список литературы

что касается твоего вопроса в твоем случае очевидно будет использовать паттерн делегирование когда тебе надо передать данные из одного контроллера в другой
http://**********/q/4327 - вот ссылка на описание паттерна

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-(void)setData {
    statusRezident = statusRezSet;
    stavkaArendGross = stavkaArendGrossSet;
    expluatRashod = expluatRashodSet;
    stoimostPokupki = stoimostPokupkiSet;
    dkpnPokupka = dkpnPokupkaSet;
    dkpnProdaja = dkpnProdajaSet;
    tempRostaStavok = tempRostaStavokSet;
    capRateProdaja = capRateProdajaSet;
    kurs = kursDollSet;
    pfrProcent = pfrSet;
    ffomsProcent = ffomsSet;
    tfomsProcent = tfomsSet;
}
поля которые ты сюда запихнул надо обернуть в обьект и передвать обьет , так как ты сделал делают только индусы)

почитай и все тебе станет ясно как передать данные из одного контроллера в другой. Извини если ответил слишком резко , все бы когда были новичками и ничего не умели
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 16:33     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2)
Еще ссылки по теме:

Objective-C Референция в Objective-C
Перцептрон на objective c Objective-C
Ошибка "SIGABRT" в Xcode(Objective-C) Objective-C
Xcode создание нового Obj-C класса Objective-C
Objective-C Objective-C A to Z Started

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Dark_Knight12
41 / 41 / 2
Регистрация: 07.11.2013
Сообщений: 132
29.01.2014, 16:33     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) #15
Создавай свойства @property и общайся между контроллерами. Простейший пример, допустим у нас есть два контроллера FirstViewController и SecondViewController. Из первого контроллера тебе надо передать данные во второй. Cоздаем свойство в файле FirstViewController.h
Objective-C
1
@property (nonatomic, retain) NSString *stroka1;
Создаем второе свойство в файле SecondViewController.h
Objective-C
1
@property (nonatomic, retain) NSString *stroka2;
В FirstViewController.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
- (void)viewDidLoad
   {
     stroka1 = @"message"; 
   }
 
-(IBAction)ButtonClicked
 {
   SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
   secondViewController.stroka2 = stroka1;
  [self.navigationController pushViewController:secondViewController animated:YES];
 }
Создаем строку, затем по нажатию кнопки переходим на второй контроллер и значение stroka2 из второго контроллера будет такое же как и stroka1.
Yandex
Объявления
29.01.2014, 16:33     Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2)
Ответ Создать тему
Опции темы

Текущее время: 16:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru