我刚开始使用Objective C和xcode。我一直在探索NSUserdefaults。
我可以将文本字段的输入保存到plist文件中。当应用程序再次启动时,Nad可以将其重新标记为标签。
我不能做的是获取替代文本以显示如果plist键为空。使用下面的代码我的标签只是空的,直到我通过文本字段将文本添加回plist。有什么指示吗?
- (void)viewWillAppear:(BOOL)animated;
{
NSUserDefaults *ud=[NSUserDefaults standardUserDefaults];
NSString *theNewString=[ud objectForKey:@"textFieldKey"];
// update the label
if (theNewString) {
[mylabel setText:theNewString];
} else {
[mylabel setText:@"nothing stored"];
}
}
答案 0 :(得分:3)
处理nil字符串或长度为0的有效字符串(空)的情况:
if (theNewString.length > 0) {
[mylabel setText:theNewString];
} else {
[mylabel setText:@"nothing stored"];
}
答案 1 :(得分:0)
if (theNewString != nil) {
[mylabel setText:theNewString];
} else {
[mylabel setText:@"nothing stored"];
}
答案 2 :(得分:0)
NSUserDefaults的正确方法是使用默认值初始化它。最好的方法是使用对象的+ initialize方法,在创建实例之前调用它:
+ (void)initialize{
// This method may be called more than once when it is subclassed, but it doesn´t matter if user defaults are registered more than once.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// Add each initial value to a dictionary
NSDictionary *appDefaults = [NSDictionary
dictionaryWithObject:@"nothing stored" forKey:@"textFieldKey"];
// Then store the dictionary as default values
[defaults registerDefaults:appDefaults];
}
一个好的编程规则也是定义键以防止输入错误:
#define HSTextFieldKey @"textFieldKey"