将数据序列化序列化

将数据序列化序列化

问题描述:

我当前正在写入和读取数据数组,并使用每个元素的索引来实现某些内容。我需要一种方法来存储这个数组,我查看了用户的默认值,但是存储了一个字典,使用了键盘的中间值。我不知道存储了什么密钥。将数据序列化序列化

什么是最好的是存储在iPhone上的数据数组?

问候

的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]];  
} 

你可能想序列阵列的字典,如果你有你想存储不止一个。

+0

欣赏它。 :D – jarryd 2010-07-07 07:17:51

+0

“someInfo”涉及什么? – jarryd 2010-07-07 07:26:38

+0

这是文件的名称。 – 2010-07-07 08:24:38

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

+0

我只是在数组中存储NSString。 我从一个文本字段中获取用户输入(用户保存一个'最爱'的标题,我添加了他们想要保存的图片索引) 然后,当从数组中读取数据时,我只关闭索引,填充tableview与阵列中的所有标题。用户然后可以选择一个收藏夹,并从该数组中提取图像引用并加载到屏幕上。它不应该超过50个字符串。 – jarryd 2010-07-07 07:50:26

+0

听起来像存储到plist将是最适合您的情况。我建议切换到使用NSDictionary,而不是附加图片索引。你最喜欢的自定义类可能会更好,但是你应该使用NSKeyedArchiver。 – 2010-07-07 08:08:51

+0

我试过NSDictionary,但问题是我使用数组的索引来访问值我不知道的关键。我想要知道的只是存储数组,然后加载它。现在我读取和写入数组,所以我只想序列化和反序列化它。 – jarryd 2010-07-07 08:14:38