Форум программистов, компьютерный форум, киберфорум
Наши страницы

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. Просмотров 3675. Ответов 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), что бы метод мог обрабатывать эти данные? На данный момент в метод передаются неинициализированные переменные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 00:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача инициализированных переменных из одного класса в другой (objective c, XCODE 5.0.2) (Objective-C):

Ссылка на объект с одного класса в другой - Программирование iOS
Доброго времени суток. Начну с того, что в objective-c я довольно недавно стал пробовать. перешел с С++ на него. Помогите пожалуйста...

Ошибка "SIGABRT" в Xcode(Objective-C) - Objective-C
Написал код Вот фрагмент из (ViewController.h) @interface ViewController : UIViewController &lt;UITableViewDataSource&gt; ...

Передача переменных из одного файла в другой - PHP Сети
Очень нужна ваша помощь. Никак не могу понять как из файла index.php перенести переменную в hello.php, и в hello.php проверять, если...

Передача значений переменных из одного js-скрипта в другой - JavaScript
Здравствуйте! Есть проблема. Имеется, к примеру, такой HTML-файл: ... &lt;script&gt; ... var a1 = a2, b1 = b2, c1 = c2; ... ...

Передача значения переменных одного класса другому - C#
Всем привет. Нужно передать значения одного класса другому, при этом семантика методов класса меняться не должна, так как они на событие...

Сложности с передачей значений переменных с одного класса, в другой - Java SE
Здравствуйте, столкнулся с проблемой. Есть класс &quot;Configuration&quot;, который вытягивает значения из &quot;db.properties&quot;, это конфигурационный файл...

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

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

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

Используйте паттерн делегирования, создайте протокол и унаследуйте его классом приемником сообщения.
Вообще это и имелось ввиду, прежде чем умничать посмотри на код и уровень того человека который его написал
0
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
21.01.2014, 17:33  [ТС] #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. Что не так сделал?
0
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
21.01.2014, 19:45 #6
Цитата Сообщение от TimurZham Посмотреть сообщение
При том, что в файле TIMBrain.h я объявил переменную kurs. Что не так сделал?
Хотелось бы на это взглянуть.... переменную или свойство ?
0
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
21.01.2014, 20:33  [ТС] #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;
}
Вот так все работает)))
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.01.2014, 07:38 #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-те.
0
Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
22.01.2014, 17:30 #9
Цитата Сообщение от zulkis Посмотреть сообщение
Для этого сохраняйте ссылку на последний активный элемент, и его уже resign-те.
или корневой view послать endEditing
1
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.01.2014, 20:53 #10
Venzo, замечательное замечание!
0
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
23.01.2014, 18:20  [ТС] #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. Названия переменных я поменяю позже, сечас для меня важно понять сам алгоритм :-)
Всем Большое спасибо!
0
Pro2005
44 / 44 / 3
Регистрация: 27.05.2013
Сообщений: 163
23.01.2014, 19:31 #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...
Он в них просто создается и инициализируется... и все...
0
TimurZham
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6
25.01.2014, 02:16  [ТС] #13
Препредставлю код последней версии в файле. Думаю будет легче понять мою логику. Дело в том, что данные инициализируются во FirstView только в тот момент, когда пользователь нажимает кнопку done или 'тапает' по бэкграунду (перед этим заполнив все text field входными данными), а расчет этих данных начинается только в SecondView при нажатии кнопки, А сам алгоритм расчета содержится в классе TIMBrain. Получается такая картина, если я не создаю метод (функцию) setData, которая после нажатия кнопки done или при 'тапе' по бэкграунду инициализирует данные в классе TIMBrain, то в классе TIMBrain входнsе данные не инициализируются и в итоге расчета получется полная ерунда, по сути функция setData мне нужна только для того, что бы перенести инициализированные данные из FirstView в класс TIMBrain, где ведутся все расчеты, которые вызываются в SecondView.

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

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

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;
}
поля которые ты сюда запихнул надо обернуть в обьект и передвать обьет , так как ты сделал делают только индусы)

почитай и все тебе станет ясно как передать данные из одного контроллера в другой. Извини если ответил слишком резко , все бы когда были новичками и ничего не умели
0
Dark_Knight12
41 / 41 / 2
Регистрация: 07.11.2013
Сообщений: 132
29.01.2014, 16:33 #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.
0
29.01.2014, 16:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.01.2014, 16:33
Привет! Вот еще темы с ответами:

Передача информации из одного класса в другой - C#
У меня есть класс KeyCreator, там генерируется public string GetSerialNum(),public string CreateInstallationKey() и public string...

AS 3.0 Передача данных из одного класса в другой - ActionScript
Доброе время суток форумчане =) Пишу класс для общения с php: отправки и получения данных. Но появилась проблема: не очень...

Передача значения из одного класса в другой - Программирование Android
Доброго времени суток! Проблема следующая: В MainActivity моего проекта лежит список, мне нужно передать идентификатор нажатого элемента...

Передача массива одного класса в другой С++ - C++
Доброго времени суток. Столкнулся с проблемой, есть класс который заполняет массив, этот массив нужен в другом классе. Как мне передать...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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