NSDictionary 转换后显示 null

Posted

技术标签:

【中文标题】NSDictionary 转换后显示 null【英文标题】:NSDictionary show null after converted 【发布时间】:2014-05-31 12:30:53 【问题描述】:
NSString *profilestring = [self.userDefaults objectForKey:@"profilestrings"];
NSDictionary *dicProfile = [profilestring propertyListFromStringsFileFormat];
NSLog(@"--->>%@",profilestring);
NSLog(@">>%@",dicProfile);

self.userDefaults是NSUserDefaults,NSLog(@"--->>%@",profilestring);打印一个字符串,比如


    useraddtime = 1401444211;
    userage = 11;
    usernickname = XJD;
    usersex = 1;
    userstatus = 1;

但是NSLog(@">>%@",dicProfile); 打印出(null),你能帮帮我吗?

【问题讨论】:

你想用语句完成什么:NSDictionary *dicProfile = [profilestring propertyListFromStringsFileFormat];? @DMusic 您的字符串,即 profilestring 不是 .strings 文件格式 @DMusic 在 profilestring 上使用 propertyList 而不是 propertyListFromStringsFileFormat 方法 【参考方案1】:

Apple 的文档说键和值本身总是用直引号括起来的字符串。您的键和值没有用引号引起来。字符串,即 profilestring 应该是这样的


"useraddtime" = "1401444211";
"userage" = "11";
"usernickname" = "XJD";
"usersex" = "1";
"userstatus" = "1";

【讨论】:

我怀疑 OP 真的想要“.strings 文件格式”,可能想要“plist”格式。 @Zaph 方法propertyListFromStringsFileFormat需要.string文件格式的字符串 不是,plist 格式支持字符串以外的对象。 @Zaph 对于 plist 格式的字符串,您需要使用方法 propertyList【参考方案2】:

看起来你的 [self.userDefaults objectForKey:@"profilestrings"] 实际上是 NSDictionary 所以你可以做类似的事情

NSDictionary *dicProfile = [NSDictionary dictionaryWithDictionary:[self.userDefaults objectForKey:@"profilestrings"]];

【讨论】:

以上是关于NSDictionary 转换后显示 null的主要内容,如果未能解决你的问题,请参考以下文章

如何修复错误无法将 [NSDictionary] 快速转换为 NSDictionary?

当我将 NSData 转换为 NSDictionary 时,在 iOS9 和 iOS8 上显示了一些不同的东西

将 JSON 数据从 NSData 转换为 NSDictionary

在 NSDictionary 中检测 Null 值

将 NSDictionary 转换为 Swift 字典

如何将 NSManagedObject 转换为 NSDictionary