0

在我的 iOS 程序中。我创建了多个数组,它们一起工作以使程序正常工作。现在我需要一种方法来存储数组,即使 iPhone 已关闭。所以我需要将这些数组存储为只有我可以触摸的文件。


我真的很想使用用户默认值,但我只是不知道这是否是我需要的。我有这样的问题:

  1. 我的数据在用户默认设置中会持续多久?
  2. 你什么时候可能会丢失数据?

如果我能够将数组存储在 User Defaults 中,我该如何将数组存储在 NSDictionaries 中?这样我就可以将关联的数组保存在一起,并为每个数组指定一个特定的键。

4

4 回答 4

3

像在 NSDefaults 中一样将数组存储为 NSData

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:urArray1] forKey:@"Array1"];

[[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:urArray2] forKey:@"Array2"];

并将其读作

 NSData *dataRepresentingSavedArray = [[NSUserDefaults standardUserDefaults] objectForKey:@"Array1"];
 if (dataRepresentingSavedArray != nil)
      NSArray *oldSavedArray = [NSKeyedUnarchiver unarchiveObjectWithData:dataRepresentingSavedArray];
于 2012-05-10T11:25:47.757 回答
0

我认为您想要的是将阵列存储在磁盘上,然后(当您真正需要它们时)将它们取回。您可以先查看您内部的对象是否NSMutableArrays符合NSCoding协议。然后,您可以简单地将它们写入磁盘并在需要时加载它们。为此,您可以使用NSKeyedArchiver类。


正如@The Saad 指出的那样,您可以使用那段代码存储数组。虽然我不会推荐它。您也可以查看@roronoa zorro 的答案。

于 2012-05-10T11:28:19.893 回答
0

NSuSerDefaults 是一种在 iPhone 中存储持久数据的方式,只要应用程序保留在 iPhone 上,您就不必担心数据丢失或持久性问题。

是的,您可以将 NSDictionary 对象存储在 NSUserDefaults 中,但建议将其用于小数据。对于更大的数据,您可以使用 sqlite 或任何其他数据库。

这是NSUserDefault的教程

于 2012-05-10T11:29:40.280 回答
0

NSUserDefaults基本上只是属性列表序列化的包装器。

NSUserDefaults 为 Mac OS X 的首选项系统提供了一个编程接口。首选项实际上存储在磁盘中,它们被写入用户的 Library/Preferences/ 目录,文件名等于带有 plist 扩展名的包标识符。

在这里查看 MikeBeam 的文章

于 2012-05-10T11:37:14.863 回答