[英]Why does my iPhone application crash when it receives a memory warning?
[英]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.