我总是使用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时?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)