![](/img/trans.png)
[英]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.