iOS - 将图像数组保存到CoreData

时间:2012-09-07 02:56:29

标签: ios core-data uiimage nsarray

我想要存储一系列UIImages,以便以后轻松访问。根据我的阅读,我应该将Core Data中的引用和图像保存到磁盘。我在我的实体上创建了一个userImages属性并将其设置为Transformable,我的图像数组称为userImages。

下一步是做这样的事情:

NSFetchRequest * request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Item" inManagedObjectContext:context]];
[request setPredicate:[NSPredicate predicateWithFormat:@"itemId=%@",3]];

item = [[context executeFetchRequest:request error:&error] lastObject];

if (error) {
    NSLog(@"error with request");
}

//Update the object
item.userImages = someArrayOfImageReferences;

error = nil;
if (![context save:&error]) {
    NSLog(@"error");
}

但是我如何构造someArrayOfImageReferences?我是否必须创建另一个任意图像名称数组,如image1.png,image2.png等?似乎应该有更好的方法。

1 个答案:

答案 0 :(得分:0)

图像集实际上不是核心数据中的数组,而应该是NSSet。只需将数组中的对象指针复制到新的NSSet中即可。

即使图像都有文件名,也不要使用它们。更好的方法是动态生成名称,至少是内部使用。当然,如有必要,您可以让用户面对名字。对于您的内部名称,请使用基于GUID的内容,该GUID可以动态生成,也可以根据当前系统时间生成。 (请务必检查现有文件并相应调整名称,以防用户更改系统时间。)