【问题标题】:How to store UIImages and NSArrays in a CoreData file? What attribute type to use?如何将 UIImages 和 NSArrays 存储在 CoreData 文件中?使用什么属性类型?
【发布时间】:2011-03-31 22:19:03
【问题描述】:

我刚刚开始使用核心数据,我想知道我需要使用哪种属性类型,以便可以将 UIImage 和 NSData 存储在 CoreData 的“文件”中。我的意思是我需要将属性类型设置为什么。

【问题讨论】:

    标签: iphone objective-c xcode core-data ios4


    【解决方案1】:

    对于图像,创建一个类型 Transformable,然后将以下内容添加到您的 .m 文件中:

    @implementation ImageToDataTransformer
    
    + (BOOL)allowsReverseTransformation {
        return YES;
    }
    
    + (Class)transformedValueClass {
        return [NSData class];
    }
    
    - (id)transformedValue:(id)value {
        NSData *data = UIImagePNGRepresentation(value);
        return data;
    }
    
    - (id)reverseTransformedValue:(id)value {
        UIImage *uiImage = [[UIImage alloc] initWithData:value];
        return [uiImage autorelease];
    }
    

    【讨论】:

      【解决方案2】:

      通过将转换器设置为 NSUnarchiveFromDataTransformerName,可以将 UIImage 存储为 Transformable,而无需编写任何额外的代码。

      请参阅http://ootips.org/yonat/uiimage-in-coredata/ 的说明。

      【讨论】:

        【解决方案3】:

        类型是“二进制数据”,我相信它最终会成为实体属性中的 NSData 类型。

        但是对于 UIImage,您不能将其按原样存储在数据库中 - 您必须先将其转换为 NSData 对象(转换为 JPG 或 PNG 文件)或将 UIImage 存储到磁盘(作为PNG或JPG),然后将文件路径存储在数据库中。

        除非它是一个非常小的图像,否则最好不要将它保存在数据库中。

        【讨论】:

          猜你喜欢
          • 2022-08-16
          • 1970-01-01
          • 2012-05-03
          • 2016-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多