如何在NSUserDefaults中保存NSMutablearray

use*_*148 62 objective-c nsuserdefaults uitableview nsmutablearray ios

我有两个NSMutableArray人.它们由图像或文本组成.数组通过a显示UITableView.当我杀死应用程序时,其中的数据UITableView会丢失.如何UITableView使用NSUserDefault?保存数组?

Tim*_*Tim 113

注意:NSUserDefaults将始终返回您传入的对象的不可变版本.

存储信息:

// Get the standardUserDefaults object, store your UITableView data array against a key, synchronize the defaults
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:arrayOfImage forKey:@"tableViewDataImage"];
[userDefaults setObject:arrayOfText forKey:@"tableViewDataText"];
[userDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)

要检索信息:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSArray *arrayOfImages = [userDefaults objectForKey:@"tableViewDataImage"];
NSArray *arrayOfText = [userDefaults objectForKey:@"tableViewDataText"];
// Use 'yourArray' to repopulate your UITableView
Run Code Online (Sandbox Code Playgroud)

在第一次加载时,检查返回的结果是否NSUserDefaultsnil,如果是,则需要创建数据,否则从中加载数据NSUserDefaultsUITableView保持状态.

更新

在Swift-3中,可以使用以下方法:

let userDefaults = UserDefaults.standard

userDefaults.set(arrayOfImage, forKey:"tableViewDataImage")
userDefaults.set(arrayOfText, forKey:"tableViewDataText")
userDefaults.synchronize()

var arrayOfImages = userDefaults.object(forKey: "tableViewDataImage")
var arrayOfText = userDefaults.object(forKey: "tableViewDataText")
Run Code Online (Sandbox Code Playgroud)

  • 您的问题询问如何在NSUserDefaults中存储数组. (5认同)
  • Swift 3不需要执行“同步” (2认同)

Phi*_*tto 45

您可以像这样保存可变数组:

[[NSUserDefaults standardUserDefaults] setObject:yourArray forKey:@"YourKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

稍后,您将从用户默认值中获取可变数组.如果要稍后编辑数组,请务必获取可变副本.

NSMutableArray *yourArray = [[[NSUserDefaults standardUserDefaults] arrayForKey:@"YourKey"] mutableCopy];
Run Code Online (Sandbox Code Playgroud)

然后,您只需UITableview通过UITableView委托设置可变数组中的数据

希望这可以帮助!


Man*_*anu 7

我只想在其他答案中添加您要存储的对象存储在NSUserDefaultApple文档中的报告必须符合以下要求:

"值参数可以是唯一的财产清单对象:NSData,NSString,NSNumber,,的NSDate,NSArray的,或者NSDictionary的NSArray的对于和的NSDictionary对象,它们的内容必须属性列表对象."

这里是属性列表编程指南的链接

所以要注意阵列里面的内容