繁体   English   中英

从NSUserDefaults加载数组时,为什么我的应用程序崩溃?

[英]Why does my application crash when loading an array from NSUserDefaults?

我正在尝试从iPhone应用程序中的NSUserDefaults加载数组。 我用这段代码设置:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
self.myarray_1 = nil;

但随后我的应用程序崩溃在以下行:

self.myarray_1 = [[NSMutableArray alloc] 
                   initWithArray: [defaults objectForKey:@"highscores"]];   

有错误

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '-[NSCFString count]: unrecognized selector sent to instance 0x796c710'

我怎么解决这个问题?

错误消息表明NSString一个实例收到了一条count消息,但显然它没有响应它(即没有实现这样的消息)。 该消息很可能是针对NSArray实例的。

您是否意外地在密钥@"highscores"默认值中保存了NSString而不是NSArray 也许在你以前的一个版本中? 要清除所有用户默认设置,您只需从模拟器或设备中删除该应用程序并重新安装即可。

尝试这个

self.myarray_1 = [[NSMutableArray alloc] initWithArray:(NSArray*)[defaults objectForKey:@"highscores"]]; 

而且我相信你已经将变量myarray_1作为你这个班级的proparty。

应用程序默认值中的值是String,而不是Array。 您可能将默认设置为字符串而不是代码中其他位置的数组。 查找您正在调用的位置-[NSUserDefaults setObject:forKey:] ,并将highscores键作为第二个参数。 要么你仍然传递一个NSString作为第一个参数,或者你曾经在一个点,它仍然在应用程序的首选项中设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM