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

标签 iphone objective-c ios persistence

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

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

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

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

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

提前谢谢大家!

最佳答案

考虑使用 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 协议(protocol)的类。

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

对评论的回应:

以下应该适用于 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];

关于iphone - Objective-C - 如何保存和加载包含图像的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11164986/

相关文章:

ios - 如何关闭模态视图 Controller ,然后立即让呈现 View Controller 呈现不同的模态视图 Controller ?

iPhone - CL标题 : how can I transform the trueHeading to a vector

objective-c - 在 NSDictionary 中存储枚举值

objective-c - 如何在 Objective-C 中对 NSArray 进行切片?

iphone - 想要在圆圈中显示图像是可能的以及如何

ios - 如何将导航栏大标题转换为多行,居中对齐

ios - 以编程方式创建带有按钮目标的自定义 View

iphone - 如何在不像素化的情况下调整(缩小)UIView 的大小?

iphone - 如何访问安装在 gphoto2 ://[usb:001, 003]/的 iPhone?

ios - 从 UITextField 获取一个值,计算另一个值,然后更新 UILabel