NSUserDefaults不保存

Ama*_*mar 2 xcode nsuserdefaults saving-data ios5

我使用NSUserDefaults方法来保存数据.我保存了一个int和一个NSMutableArray.

当应用程序终止,进入后台或切换到另一个视图时,int会得到正确保存.当应用程序进入后台并且切换到另一个视图时,数组会保存,但每次退出模拟器并返回时都不会保存,即使我使用与int和NSMutableArray完全相同的代码.

这是我定义NSMutableArray的代码:

array = [[NSMutableArray alloc] init];
if ([prefs objectForKey:@"array"] != nil) {
array = [prefs objectForKey:@"array"];
}
Run Code Online (Sandbox Code Playgroud)

然后进行编辑和保存:

[array addObject:anObject];
[prefs setObject:array forKey:@"array"];
[prefs synchronize];
Run Code Online (Sandbox Code Playgroud)

除了数组和int部分之间的更改之外,int具有完全相同的代码.

谁能告诉我什么是错的?我查了很多相关的问题,但没有一个能解决我的问题.

提前致谢.

小智 6

"即使你将一个可变对象设置为值,NSUserDefaults返回的值也是不可变的."

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

您正在为指向NSMutableArray的指针返回一个指向不可变NSArray[NSUserDefaults objectForKey:...]的指针.然后使用NSArray(没有效果)并保存未更改的NSArray.addObject:

(因为每次都要分配NSImmutableArray,所以也可能有内存泄漏.)