Форум программистов, компьютерный форум, киберфорум
Objective-C
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 11.12.2013
Сообщений: 6

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

12.12.2013, 00:46. Показов 5273. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2013, 00:46
Ответы с готовыми решениями:

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

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

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

14
11 / 11 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
27.12.2013, 19:01
Вообще конечно код который ты представил очень далек от идеала)) особенно мне понравилось про скрытие клавиатуры по тапу на сводобное место)) для этого есть класс жестов специальный или уже переопредели методы тача на вьюхе) что касается твоего вопроса, создай отдельный обьек, назови его как нибудь осмысленно и добавь ему поля которые тебе нужно передавать. Вот тебе пример
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
5845 / 1226 / 499
Регистрация: 23.11.2010
Сообщений: 3,375
Записей в блоге: 1
31.12.2013, 02:57
Цитата Сообщение от Dan_banan_ Посмотреть сообщение
что касается твоего вопроса, создай отдельный обьек, назови его как нибудь осмысленно и добавь ему поля которые тебе нужно передавать.
Что за ересь?

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

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

Друзя, спасибо вам за советы и подсказки! Большая просьба к вам, не могли бы вы ссылаться более конкретно на теоретические моменты и более подробно их описывать, дело в том, что я только учусь и стараюсь искать данные моменты в литературе! С вашей помощью мне будет гораздо легче самообразоваться, в следствии чего, я буду меньше задавать глупых вопросов. Спасибо за понимание и помощь!
Вложения
Тип файла: zip BrocerCalculator.xcodeproj.zip (30.3 Кб, 9 просмотров)
0
11 / 11 / 1
Регистрация: 03.03.2013
Сообщений: 87
Записей в блоге: 1
25.01.2014, 02:36
Почитай плиз книгу по программированию на 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
44 / 44 / 4
Регистрация: 07.11.2013
Сообщений: 132
29.01.2014, 16:33
Создавай свойства @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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2014, 16:33
Помогаю со студенческими работами здесь

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

Передача массива из одного класса в другой
Имеется класс Open.cs в нём есть метод public void OpExcel(string file, Form1 form, IEnumerable sumStrArrayPol) { ...

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

Передача переменной из одного класса в другой
Здравствуйте, пишу лабораторную и что-то чувствую, что прогер из меня неважный, весь интернет перерыл, но ответа на свой вопрос так и не...

Передача коллекции из одного класса в другой
Добрый день, столкнулся с проблемой... Как реализовать передачу данных коллекции через вспомогательный класс public static...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru