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 上显示了一些不同的东西