Objective-C - 如何保存和加载包含图像的数组

时间:2012-06-22 22:32:09

标签: iphone objective-c ios persistence

大家晚上好,我希望你能帮我解决一个Objective-C问题。

在我的应用程序中,我有一个包含16个对象的可变数组;对象是图像。

我想保存并加载数组,以便在用户退出程序时保留图像。

我是数据持久性的新手,我可以看到有几种保存和加载数据的方法,我熟悉保存和加载数据的NSUserDefaults方法。我知道你不能用这种方式保存带有图像的数组。

有人可以解释一下,或许有一个最好和最简单的方法来保存和加载带有图像的数组吗?任何帮助都会很棒,因为我不确定最好的方法。

提前感谢大家!

1 个答案:

答案 0 :(得分:2)

考虑使用NSKeyedArchiver

// Archive
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:theArray];
NSString *path = @"/Users/Anne/Desktop/archive.dat";
[data writeToFile:path options:NSDataWritingAtomic error:nil];

// Unarchive
NSString *path = @"/Users/Anne/Desktop/archive.dat";
NSMutableArray *theArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];

通过这种方式,您可以确保未归档的阵列与原始阵列完全相同 NSKeyedArchiver可以使用符合NSCoding协议的所有类。

注意:您可以使用任何扩展名。

对评论的回应:

以下内容适用于iOS:

// The Array
NSMutableArray * array = [[NSMutableArray alloc] init]; 

// Determine Path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [ [paths objectAtIndex:0] stringByAppendingPathComponent:@"archive.dat"];

// Archive Array
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
[data writeToFile:path options:NSDataWritingAtomic error:nil];

// Unarchive Array
NSMutableArray *theArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];