xcode - NSUserDefaults 不保存

标签 xcode ios5 nsuserdefaults saving-data

我使用 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 返回的值是不可变的,即使您将可变对象设置为值也是如此。”

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

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

(你也可能有内存泄漏,因为你每次都在分配 NSImmutableArray。)

关于xcode - NSUserDefaults 不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8153915/

相关文章:

ios - 获取 UIImageView 中的图像数组(在 UIPageViewController 中)

ios - Fat XIB 的内存问题

iphone - 获取所有相册的列表和每个相册的缩略图

iPhone 从设置中检索应用程序中的 gmail 帐户详细信息

objective-c - 点符号与方法符号

ios - 强制重新加载页面以反射(reflect)更新的 NSUserDefaults

ios - 在显示 View 之前检查 NSUserDefaults

objective-c - 将我的 Mac 应用分发给 friend

xcode - 如何处理进入同一个 View Controller 的两个 segue?

swift - 从 UITableViewCell 保存到 UserDefaults 会导致 Swift 4.2 崩溃