Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Core data 将UIImage保存到核心数据_Core Data_Uiimage - Fatal编程技术网

Core data 将UIImage保存到核心数据

Core data 将UIImage保存到核心数据,core-data,uiimage,Core Data,Uiimage,我正在尝试在核心数据上保存图像。属性类型是“可转换的”。当我使用以下句子时: // NOTHING SAVED entity.image = [UIImage imageNamed:@"a.jpg"]; [self saveContext]; 没有保存任何内容。但将上述句子替换为以下内容: entity.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"a" ofType:@"jp

我正在尝试在核心数据上保存图像。属性类型是“可转换的”。当我使用以下句子时:

// NOTHING SAVED
entity.image = [UIImage imageNamed:@"a.jpg"];
[self saveContext];
没有保存任何内容。但将上述句子替换为以下内容:

entity.image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"a" ofType:@"jpg"]];
[self saveContext];

它可以工作 我的Xcode是6.3

谢谢。

这是非常奇怪的行为。我不认为有什么可以完全解释这一点,但我会看看我能做些什么

imageNamed:
调用与其他创建图像的方法不同,它使用自动图像缓存。当您加载名为:的图像时,它会自动缓存,以便快速重复使用。预期用途是用于经常使用的图像,例如UI元素。它也适用于只使用一次的图像,但在这种情况下没有真正的优势

因此,
imageNamed:
在内部执行的工作与其他图像创建方法不同。根据你的结果(顺便说一句,我也得到了同样的结果),这会产生一个效果不同的图像,至少在某些时候是这样的。但是,当您有一个
UIImage
时,似乎没有任何方法可以询问它是如何创建的,或者它是否表示缓存的图像

<强>我认为这是一个错误< /强>,我建议把它报告给苹果。同时,你有一个变通办法。作为安全检查,最好执行以下操作,以避免意外遇到问题:

UIImage *image = // loaded in whatever way you want
entity.image = [UIImage imageWithCGImage:image.CGImage];
这一步骤应该是不必要的。但正如你所发现的,有时候正确的方法是行不通的

[如果苹果公司的任何人看到这一点:报告为rdar://20717042]

entity.image = UIImagePNGRepresentation([UIImage imageNamed:@"a.jpg"]);
[self saveContext];
UIImage *image = // loaded in whatever way you want
entity.image = [UIImage imageWithCGImage:image.CGImage];