NsuserDefaults键返回(null)

时间:2015-02-17 07:03:20

标签: ios nsuserdefaults

Nsuserdefault键在安装后的初始运行时返回“(null)”。如何检查密钥是否存在。我已经批准了许多链接,它说要检查它是不是。但它没有奏效。

enter code here

- (NSString *)getTalkText
{
    NSString *storedUsername = [[NSUserDefaults standardUserDefaults] objectForKey:PERS_STORED_TalkText];
    return storedUsername;
 }

if(![[[AppManager sharedManager] getTalkText]isEqualToString:@""] || [[AppManager sharedManager]getTalkText]!=nil)

    {
        self.talkTextView.text=[[AppManager sharedManager]getTalkText];
    }

4 个答案:

答案 0 :(得分:1)

您没有以正确的方式检查条件。通过以下方式做到:

if([[AppManager sharedManager] getTalkText]!=nil && [[[AppManager sharedManager] getTalkText] length] > 0)
{
// Do the rest
}

答案 1 :(得分:1)

这是检查密钥的特定值是否存在的最简单方法

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSObject * object = [userDefaults objectForKey:@"your_key"];
if(object != nil){
    NSLog(@"Object is not nil");
    //do your operations here
}else{
    NSLog(@"Object is nil");
}

答案 2 :(得分:0)

if(([[NSUserDefaults standardUserDefaults] objectForKey:@"YOUR_KEY"]) != (id)[NSNull null] || [([[NSUserDefaults standardUserDefaults] objectForKey:@"YOUR_KEY"]) length] != 0)) {

// value available 
}
else{
// null
}

答案 3 :(得分:0)

如果NSUserDefaults中没有对象,它肯定会返回nil。如果只是在安装之后,它应该只包含一些Apple键(例如AppleLanguages)。您可以通过在[UIApplicationDelegate应用程序:didFinishLaunchingWithOptions:]方法中的某处添加此行来检查它的内容:

NSLog(@"%@", [NSUserDefaultsstandardUserDefaults].dictionaryRepresentation);

如果您只想添加默认值,请考虑使用[NSUserDefaults registerDefaults]方法,如下所述:What is the use of -[NSUserDefaults registerDefaults:]?