我有一個NSMutableArray
在我的AppDelegate
裏面,我試圖將它保存到NSUserDefaults
。 NSMutableArray
(菌株最終)包含一個收藏項列表。我希望這個列表保存,即使應用程序關閉,然後重新啓動,它也會存在。有誰知道爲什麼我的代碼不工作(不保存我的數據)?請看下圖:保存NSMutableArray爲NSUserDefaults
AppDelegate.m
-(void)updateStrains:(NSDictionary *)item
{
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSData *dataSave = [currentDefaults objectForKey:@"strains"];
if (strainsfinal != nil)
{
NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataSave];
if (oldSavedArray != nil)
strainsfinal = [[NSMutableArray alloc] initWithArray:oldSavedArray];
else
strainsfinal = [[NSMutableArray alloc] init];
}
}
編輯:Appdelegate.m所以我改變了我上面的方法下面的方法(我認爲它應該工作),但應用程序崩潰了,他說:「終止應用程序由於未捕獲的異常‘NSInvalidArguementException’,理由是:「NSConcreteAttributedString initwithString:無‘值’
我缺少什麼?
-(void)updateStrains:(NSDictionary *)item {
NSData *dataSave = [NSKeyedArchiver archivedDataWithRootObject:strainsfinal];
[[NSUserDefaults standardUserDefaults] setObject:dataSave forKey:@"strains"];
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName:@"arrayupdated" object:self userInfo:nil];
NSLog(@"updated strains %@",strainsfinal);
}
這並沒有爲我工作...:/ – Brittany
@Brittany究竟沒有工作爲你 ? –
我加了[currentDefaults synchronize];到我的方法結束,它不保存。你的意思是什麼,「每次你節省了什麼」?你能告訴我代碼是什麼樣子嗎?謝謝! – Brittany