我使用 NSUserDefaults 方法来保存数据。我保存了一个 int 和一个 NSMutableArray。
当应用程序终止、进入后台或切换到另一个 View 时,int 会被正确保存。当应用程序进入后台和切换到另一个 View 时,该数组会保存,但不会在我每次退出模拟器并返回时保存,即使我对 int 和 NSMutableArray 使用完全相同的代码也是如此。
这是我定义 NSMutableArray 的代码:
array = [[NSMutableArray alloc] init];
if ([prefs objectForKey:@"array"] != nil) {
array = [prefs objectForKey:@"array"];
}
然后进行编辑和保存:
[array addObject:anObject];
[prefs setObject:array forKey:@"array"];
[prefs synchronize];
除了数组和整型部分的不同外,整型具有完全相同的代码。
谁能告诉我这是怎么回事? 我检查了很多相关问题,但没有一个能解决我的问题。
提前致谢。
最佳答案
“从 NSUserDefaults 返回的值是不可变的,即使您将可变对象设置为值也是如此。”
您正在分配一个指向 不可变 NSArray 的指针,该指针由 [NSUserDefaults objectForKey:...]
返回一个指向 NSMutableArray 的指针.然后,您在 NSArray 上使用 addObject:
(没有任何效果)并保存未更改的 NSArray。
(你也可能有内存泄漏,因为你每次都在分配 NSImmutableArray。)
关于xcode - NSUserDefaults 不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153915/