在Xcode 6 beta 4(iOS 8)中,为什么Core Data不会像在iOS 7中声明的那样将UIImage字段保留到后端,当我声明它是Transformable时?

在Xcode 6 beta 4(iOS 8)中,为什么Core Data不会像在iOS 7中声明的那样将UIImage字段保留到后端,当我声明它是Transformable时?,第1张

概述在我的iOS项目的数据模型中,我有一个名为Foo的实体,它有一个场图像. 我总是使用Transformable设置存储此字段,以便iOS自动使用NSCoding存储图像. 但是,我发现当我尝试检索它时,出来的UIImage *已经损坏了.它大多数时间都具有CGSizeZero大小,并且不包含有效数据. 在Xcode 6 beta 4下有没有人经历过这个? 注意:我正在使用MagicalRecord 在我的iOS项目的数据模型中,我有一个名为Foo的实体,它有一个场图像.
我总是使用transformable设置存储此字段,以便iOS自动使用NSCoding存储图像.

但是,我发现当我尝试检索它时,出来的UIImage *已经损坏了.它大多数时间都具有CGSizeZero大小,并且不包含有效数据.

在Xcode 6 beta 4下有没有人经历过这个?

注意:我正在使用MagicalRecord来设置核心数据堆栈.我使用了所谓的“自动迁移”核心数据堆栈.我每次在模拟器上运行此测试时都会重置内容和设置.

我也试图在内存数据存储中重现这个问题(这样它可以进行单元测试)但是我无法准确地重现这个问题(因为我无法拆除堆栈并再次初始化它).

解决方法 在iOS 7中我的应用程序正常工作之后我也遇到了这个问题.我的问题是我试图通过直接引用我的包中的单个源图像来设置多个NSManagedobjects上的图像属性;解决方案是将属性设置为源图像的副本.

详细信息:我的应用程序允许用户在团队中设置玩家的图像属性(NSManagedobjects).当然,image属性是一个可转换的属性.用户可以捕获照片或选择一个头像,在我的包中保存为.jpeg.对于头像,我正在设置属性

player.photo = [UIImage imagenamed@"avatar.jpg"];

多个玩家通常拥有相同的头像.这根本不是iOS 7的问题,只要所有对象都在内存中,甚至可以使用iOS 8.但是对于iOS 8,在应用程序终止后,头像图像不会持久存储到核心数据中;重新启动后,所有图像都是零长度并显示空白区域(听起来很像您所看到的行为).

修复方法是使用以下内容将属性设置为源图像的副本:

UIImage *avatar = [UIImage imagenamed:@"avatar.jpg"];player.photo = [UIImage imageWithCGImage:avatar.CGImage];

我可以看到为什么手动执行转换似乎是解决方案,因为你要为每个图像属性设置一个唯一的对象……但真正的修复(至少在我的情况下)要容易得多.

总结

以上是内存溢出为你收集整理的在Xcode 6 beta 4(iOS 8)中,为什么Core Data不会像在iOS 7中声明的那样将UIImage字段保留到后端,当我声明它是Transformable时?全部内容,希望文章能够帮你解决在Xcode 6 beta 4(iOS 8)中,为什么Core Data不会像在iOS 7中声明的那样将UIImage字段保留到后端,当我声明它是Transformable时?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1024412.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存