NSUserDefaults 存儲可變數組問題


廢話不多說上代碼,項目中遇到的問題是:

NSMutableArray * arrayLoginNames = [NSMutableArray array];

arrayLoginNames  = [[NSUserDefaults standardUserDefaults] mutableArrayValueForKey:KLastLoginNameForAutoSendMsgToKeFu];

這句話取出了數組,可是當對數組添加元素后,進行存儲時卡在了下面這句話:

[[NSUserDefaults standardUserDefaults] setObject:arrayLoginNames forKey:KLastLoginNameForAutoSendMsgToKeFu];

把主線程卡主,但是不崩潰,不知道為何,就Google了,stackoverflow給了解答辦法,

When you store mutable objects to NSUserDefaults, it stores an immutable copy of it so you can't change it directly like that. You have to get the mutable copy out of defaults, change it, and then set it back, replacing old object in defaults.

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; NSMutableArray *mutableArrayCopy = [[prefs objectForKey:@"theArray"] mutableCopy]; [mutableArrayCopy addObject:@"some new value"]; [prefs setObject:mutableArrayCopy forKey:@"theArray"];

[[NSUserDefaults standardUserDefaults] synchronize];

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM