Ios NSMutableArray深度存储

Ios NSMutableArray深度存储,ios,Ios,我的应用程序模型由一个NSMutableArray组成,其中包含一些其他NSMutableArray,每个NSMutableArray包含一定数量的NSDictionary,有没有办法在不使用核心数据的情况下深度存储主数组(我指的是存储它及其所有内容),因为目前我还不知道如何使用它?目前我知道如何使用NSUserDefaults,是否有办法使用NSUserDefaults深入保存数组?如果数组及其所有内容(包括字典)仅包含兼容的对象,则可以将其放入NSUserDefaults中 与属性列表兼容的

我的应用程序模型由一个NSMutableArray组成,其中包含一些其他NSMutableArray,每个NSMutableArray包含一定数量的NSDictionary,有没有办法在不使用核心数据的情况下深度存储主数组(我指的是存储它及其所有内容),因为目前我还不知道如何使用它?目前我知道如何使用NSUserDefaults,是否有办法使用NSUserDefaults深入保存数组?

如果数组及其所有内容(包括字典)仅包含兼容的对象,则可以将其放入
NSUserDefaults

与属性列表兼容的类包括:

  • NSString
  • NSDate
  • NSData
  • NSNumber
  • NSValue
  • NSArray
  • NSDictionary
试一下

如果您的数据较小或较大

// To save to disk
[NSKeyedArchiver archiveRootObject:rootArray toFile:@"filePath"];

// To load from disk
NSArray *savedArray = [NSKeyedUnarchiver unarchiveObjectWithFile:@"filePath"];

或者您可以查看sqlite3 C包装器?

以遵循Nikolai的回答-如果您将自己的自定义对象放入数组和字典中,请确保它们可以序列化


您可以在

中了解更多信息,仅使它们符合NSCoding是不够的:要将它们放入属性列表,您必须手动将它们序列化为NSData。请记住,属性列表格式不可扩展以存储自定义类型。我不相信我说了任何与此相矛盾的话。我不相信我说了任何暗示您的矛盾的话:)我添加了注释以明确说明
NSCoding
不会改变您间接提到的属性列表序列化。
// To save to disk
[NSKeyedArchiver archiveRootObject:rootArray toFile:@"filePath"];

// To load from disk
NSArray *savedArray = [NSKeyedUnarchiver unarchiveObjectWithFile:@"filePath"];