哪种方式存储数据(图像)?NSData,String或Transformable

WYS*_*WYS 4 xcode core-data objective-c ios

我一直在使用base64编码.我已成功将图像编码为NSData的NSString,我还将其解码回NSData.

所以现在我想将图像存储在Core Data中.但是最好存储NSString,NSData还是第三个可转换的?

我将图像转换为NSString的原因是因为我想将它存储在XML中.

提前致谢.

Jes*_*sak 8

可转换(根据@timthetoolman)是最简单的方法.但是,如果您的图像很大,从iOS 5开始,正确的方法是使用"二进制数据"属性类型并选择"允许外部存储",以便Core Data可以将大量数据存储在数据库.这可以更有效率.


tim*_*man 7

使用NSValueTransformer将图像转换为NSData对象,然后将数据blob存储在Core Data中.您可以在建模工具中注册值变换器子类.您可以查看Apple的PhotoLocations示例或本教程如何演示.

编辑完整性:正如其他人指出的那样,数据blob太大会导致性能问题.正如@Jesse所指出的,iOS5有一个优化,如果数据blob太大,那么Core Data会将它存储在持久存储之外.如果您必须在iOS5之前定位并且图像太大,那么您应该将文件保存在沙箱中的某个位置并将URL存储在Core Data存储中.Apple Dev Forums中的一个很好的讨论就在这里,讨论了在Core Data中存储数据blob的限制.

祝好运