0

我试图将浮点数从一个视图控制器发送到另一个。

好的,我尝试使用 NSUserDefaults 来解决这个问题。首先我用一个字符串测试它并且它工作,但现在我正在努力用我的浮动做同样的事情。任何帮助,将不胜感激!:) 这是我的代码

在我的 firstviewcontroller.h 文件中,我有

IBOutlet UITextField *nameField;
IBOutlet UILabel *greeting;
 float RWI; 
float Liters;

@property(nonatomic) float *Liters;`
@property(nonatomic, retain); IBOutlet UILabel *greeting;
@property(nonatomic, retain) IBOutlet UITextField *nameField;

-(IBAction) updatePrefs:(id) sender; @property(nonatomic) float *RWI; `

在我的 .m 文件中,我有浮动 RWI;//@synthesize RWI; @synthesize 升;@synthesize nameField,问候;

-(IBAction) updatePrefs:(id) sender
{   
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:nameField.text forKey:@"greeting"];
[prefs setFloat:20 forKey:@"Liters"];
[prefs synchronize]

然后对于secondviewcontroller.h文件

IBOutlet UILabel *greeting;
float *Liters;
}
@property(nonatomic, retain) IBOutlet UILabel *greeting;
@end`

在我的 .m 文件中

@implementation secondviewcontroller
@synthesize greeting;
@synthesize Liters;

- (void)viewDidLoad {
[super viewDidLoad];NSString *prefs = 
[[NSUserDefaults standardUserDefaults] objectForKey:@"greeting"];
float Liters  = [prefs floatForKey:@"Liters"];
greeting.text = prefs;  
}`

为什么我的浮点数会出错?任何帮助,将不胜感激!:)

4

2 回答 2

3

您遇到的错误是由于事实prefs并非[NSUserDefaults standardUserDefaults]如此,因为在您之前的陈述中,您这样做了

NSString *prefs = 
[[NSUserDefaults standardUserDefaults] objectForKey:@"greeting"];

因此,prefs是一个NSString对象。你需要修改

float Liters  = [prefs floatForKey:@"Liters"];

float Liters  = [[NSUserDefaults standardUserDefaults] floatForKey:@"Liters"];
于 2010-09-21T13:38:10.083 回答
0

您可以通过在委托类中实现 getter 和 setter 将浮点变量从一个视图传递到另一个视图。

在委托 .h 文件中

包括 UIApplication 委托

@interface DevAppDelegate : NSObject <UIApplicationDelegate>

float currentValue;

- (void) setCurrentValue:(float) currentValue;
- (float ) getCurrentValue; 

在委托实现类 .m

-(void) setCurrentValue:(float) storydata{
currentValue = storydata;
}

-(float ) getCurrentValue{
return currentValue;
}

因此,您要评估的值是通过 setters 方法和您想要该值的类在 currentValue 中设置的,只需使用 getter 方法即可。

一切顺利

于 2010-09-21T14:18:34.490 回答