簡體   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