当plist中没有数据时if else语句 - NSUserdefaults

时间:2011-10-12 14:17:49

标签: objective-c xcode

我刚开始使用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"];
    }
}

3 个答案:

答案 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"