序列化数据数组

时间:2010-07-07 06:22:44

标签: iphone nsmutablearray

我目前写入并读取数据数组,并使用每个元素的索引来实现某些功能。我需要一种方法来存储这个数组,我查看了用户默认值,但是它存储了一个字典,使用了retieval的使用键。我不知道存储了什么密钥。

最好的方法是在iphone上存储数据数组?

此致

2 个答案:

答案 0 :(得分:3)

  

NSKeyedArchiver,一个具体的子类   NSCoder提供了一种编码方式   对象(和标量值)成为   与架构无关的格式   可以存储在文件中。

因此,您可以将您喜欢的任何内容序列化到文件中:

// need a path
- (NSString*) getPath
{ 
    NSString* path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    return [path stringByAppendingPathComponent:@"someInfo"];
}

// save an array
- (void) save:(NSArray*)array
{
    [NSKeyedArchiver archiveRootObject:array toFile:[self getPath]];    
}

// get that array back
- (NSArray*) load
{
     return [NSKeyedUnarchiver unarchiveObjectWithFile:[self getPath]];       
}

如果您要存储多个数组,可能需要序列化数组字典。

答案 1 :(得分:1)

可以在NSUserDefaults中存储数组。但它取决于数组所包含的对象的类型。 NSKeyedArchiver是另一个不错的选择,就像将数组存储为plist一样。甚至可能是CoreData是您的最佳选择。这一切都取决于您的数据的预期大小以及您如何使用它。在许多情况下,NSKeyedArchiver似乎是一个公平的中间立场,但为了回答你的问题需要更多的信息。