从Objective C中的另一个类获取已实例化的实例变量

时间:2014-06-19 18:39:33

标签: ios objective-c oop instance-variables

我在让目标C中的程序工作方面遇到了一些障碍。事实上,我整天都在努力解决这个问题。

我有一个ViewController从视图中获取输入,该视图将包含一个float变量(weight)。我需要在程序的其他部分使用这个变量,因此我已将数据分配给一个非常基本的类,如下所示:

//patient.h
#import <Foundation/Foundation.h>

@interface Patient : NSObject

@property float weight;

@end

和.m:

//patient.m
#import "Patient.h"

@implementation Patient

float weight;

@end

我的第一个视图控制器:除了与UI元素的连接之外,.h文件中没有什么值得注意的,并且:

#import "Patient.h"

为了清楚起见,我省略了简单地为UIview提供服务并获取用户输入的代码

//demographicsViewController.m
#import "demographicsViewController.h"

@interface demographicsViewController ()
{
    // declares an array, for the custom picker
    NSArray *_agePickerArray;
    NSArray *_ageWeightArray;
}

@end

@implementation demographicsViewController

/* (omitting a sizeable chunk of code in the interests of clarity.  Please let me know if you think it important to see) */

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    //captures the output on the text field and converts it into a float that can be slotted straight in to the model.  Sets a default value if the field is blank

float weightTextFieldInterrogation;

if([[_weightDisplayTextBox text] length] != 0)
{
    weightTextFieldInterrogation = [_weightDisplayTextBox.text floatValue];
}
else
{
    weightTextFieldInterrogation = 70.0;
}

//Takes the weight value and plumbs it into the central weight database ready to be used in other parts of the app
NSLog(@"weight: %.1f",weightTextFieldInterrogation);
[Patient.weight] = weightTextFieldInterrogation;
Patient* thePatient = [[Patient alloc]init];
[thePatient setWeight:weightTextFieldInterrogation];
NSLog(@"Stored weight: %.1f",thePatient.weight);
}
@end

我遇到的问题是,当我尝试查找我为权重或thePatient.weight存储的值时,该变量要么无法识别(尽管#import“patient”和#import“demographicsViewController”),如果我再次实例化,则该值为空。

我已经阅读了许多不同的解决方案,但到目前为止还没有成功完成工作。如果有任何关于解决这个问题的明智想法,我将非常感激。

1 个答案:

答案 0 :(得分:0)

您的问题是您创建的对象在创建后几乎立即被销毁。你期望实例会浮动,以便你可以在将来再次拿起它,但它不会。

有一些方法可以作弊,但实际上您应该将该实例传递给其他想要/需要它的视图控制器,或者将该浮点值存储在其他地方(例如在磁盘上的文件或用户中)缺省值)。

这实际上是关于你使用对象的内容以及它们存在多长时间的OOP问题。