我在让目标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”),如果我再次实例化,则该值为空。
我已经阅读了许多不同的解决方案,但到目前为止还没有成功完成工作。如果有任何关于解决这个问题的明智想法,我将非常感激。
答案 0 :(得分:0)
您的问题是您创建的对象在创建后几乎立即被销毁。你期望实例会浮动,以便你可以在将来再次拿起它,但它不会。
有一些方法可以作弊,但实际上您应该将该实例传递给其他想要/需要它的视图控制器,或者将该浮点值存储在其他地方(例如在磁盘上的文件或用户中)缺省值)。
这实际上是关于你使用对象的内容以及它们存在多长时间的OOP问题。