大家晚上好,我希望你能帮助我解决我的一个 Objective-C 问题。
在我的应用程序中,我有一个包含 16 个对象的可变数组;对象是图像。
我想保存并加载数组,以便在用户退出程序时保留图像。
我是数据持久性的新手,我可以看到有几种保存和加载数据的方法,并且我熟悉保存和加载数据的 NSUserDefaults 方法。我知道您不能以这种方式保存带有图像的数组。
有人可以解释一下,也许是一个保存和加载图像数组的最佳和最简单方法的例子?任何帮助都会很棒,因为我不确定最好的方法。
提前谢谢大家!
大家晚上好,我希望你能帮助我解决我的一个 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];
通过这种方式,您可以确保未归档的数组与原始数组相同。
所有符合 NSCoding 协议的类都可以被NSKeyedArchiver.
注意:您可以使用任何扩展名。
回复评论:
以下应该适用于 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];