在CoreData中,Entity中Attribute的类型只有固定的几种可选。如下图:

如果我们要想直接存放UIImage到数据库,如何做?

1.在coredata中新建的attribute中类形选择Transformable.  意思表示这个字段是自定义的类型。

2.在生成的NSManagedObject文件中,将类型id改为自己想要的类型,如UIImage.

3.在xcode中字段的attribute中 name那一行写你转化的类,如写下面的注册的UIImageToDataTransformer

4.新建类:UIImageToDataTransformer,继承于NSValueTransformer。代码如下:

  1. @interface UIImageToDataTransformer : NSValueTransformer {
  2. }
  3. @end
  1. #import "UIImageToDataTransformer.h"
  2. @implementation UIImageToDataTransformer
  3. + (BOOL)allowsReverseTransformation {
  4. return YES;
  5. }
  6. + (Class)transformedValueClass {
  7. return [NSData class];
  8. }
  9. - (id)transformedValue:(id)value {
  10. return UIImagePNGRepresentation(value);
  11. }
  12. - (id)reverseTransformedValue:(id)value {
  13. return [[UIImage alloc] initWithData:value];
  14. }
  15. @end

5.在你的NSManagedObject中注册转化类,那么在存、取数据库的时候就会进行转化,如上面的UIImage 到 NSData, NSData到UIImage.

  1. + (void)initialize {
  2. if (self == [MyEntity class]) {
  3. UIImageToDataTransformer *transformer = [[UIImageToDataTransformer alloc] init];
  4. [NSValueTransformer setValueTransformer:transformer forName:@"UIImageToDataTransformer"];
  5. }
  6. }

这样就可以直接存UIImage类型的数据到数据库,实质还是存的二进制。如果是NSArray、NSDictionary等,可以使用归档。

非常重要的一点,进行了Transformable的的字段是不能进行like,contains,in这样的条件查询,只能是简单的字段名=XXX的查询。

转载自:http://blog.csdn.net/likendsl/article/details/8549333

CoreData 自定义数据类型相关推荐

  1. TVM自定义数据类型

    TVM自定义数据类型 本文将介绍"自定义数据类型"框架,该框架可在TVM中使用自定义数据类型. 介绍 在设计加速器时,关键是如何近似地表示硬件中的实数.这个问题具有长期的行业标准解 ...

  2. 自主数据类型:在TVM中启用自定义数据类型探索

    自主数据类型:在TVM中启用自定义数据类型探索 介绍 在设计加速器时,一个重要的决定是如何在硬件中近似地表示实数.这个问题有一个长期的行业标准解决方案:IEEE 754浮点标准.1.然而,当试图通过构 ...

  3. hadoop map reduce自定义数据类型时注意顺序,否则报错。

    2019独角兽企业重金招聘Python工程师标准>>> 自定义数据类型,实现Writable接口,重写write方法和readFields方法时,在操作字段时,必须保证顺序,如果在w ...

  4. Qt信号与槽传递自定义数据类型——两种解决方法

    Qt信号与槽传递自定义数据类型--两种解决方法 参考文章: (1)Qt信号与槽传递自定义数据类型--两种解决方法 (2)https://www.cnblogs.com/tid-think/p/9300 ...

  5. 【剑仙教程】易语言的结构体。自定义数据类型。

    1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言 ...

  6. Oracle自定义数据类型 1

    原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nva ...

  7. 玩转C语言之自定义数据类型-typedef

    玩转C语言之自定义数据类型-typedef 1 引言 引言:在C语言中没有提供字节类型,如果在工程中需要使用表示字节的变量时,该怎么办呢? 我们知道 1 个字节占用 8 个二进制位空间,解决这个问题的 ...

  8. go函数详解:函数定义、形参、返回值定义规范、函数内存分析、不支持重载、支持可变参数、基本数据类型和数组默认都是值传递的、支持自定义数据类型、函数返回值命名

    引入 [1]为什么要使用函数: 提高代码的复用型,减少代码的冗余,代码的维护性也提高了 [2]函数的定义: 为完成某一功能的程序指令(语句)的集合,称为函数. [3]基本语法 func 函数名(形参列 ...

  9. Go支持自定义数据类型:使用type来定义,类似于数据类型的一个别名

    为了简化数据类型定义,Go支持自定义数据类型 基本语法: type 自定义数据类型名 数据类型 可以理解为 : 相当于起了一个别名 例如:type mylnt int ----->这时mylnt ...

最新文章

  1. appJSON[tabBar][0][pagePath] pages/basics/basics 需在 pages 数组中
  2. win10 UWP 应用设置
  3. ListElement QML类型
  4. Asp.Net Core 404处理
  5. 企业一般用php还是js,网站开发用php还是js
  6. 认证方案之初步认识JWT
  7. MyBatis学习总结(19)——Mybatis传多个参数(三种解决方案)
  8. JavaScript二进制、八进制和十六进制数值
  9. 【Oracle】数据库范式
  10. python哈希类型_Python散列类型和运算符
  11. 曹雪芹诗歌中的鸿蒙,红楼一梦开辟相痴鸿蒙诗歌
  12. 大数据热的冷思考:无法取代传统的新闻传播科研方法
  13. IntelliJ IDEA全界面汉化(官方插件)
  14. office出现错误无法安装的解决办法
  15. Google advertiser api开发概述——入门指南
  16. (附源码)springboot+mysql+采用协同过滤算法的视频推荐系统的设计与实现 毕业设计261620
  17. Spring 项目启动错误提示 LoggingApplicationListener
  18. SSH2完美整合流程
  19. 低代码和云开发 区别
  20. lammps教程:Cu孪晶建模方法

热门文章

  1. Spring详解(八)------事务管理
  2. Go语言入门——Go语言环境搭建
  3. Open Live Writer测试
  4. Redis数据存储解决方案
  5. android如何与服务器交互?
  6. PHPCMS V9 按浏览次数排行调用文章
  7. 数据库基础知识——变量
  8. 计算机网络(二十四)-路由算法及路由协议
  9. php为图片添加渐变背景,HTML_CSS实例:通过定义渐变边框给图片加阴影,一般我们可以使用背景图的方 - phpStudy...
  10. slow log php,善用php-fpm的慢执行日志slow log,分析php性能问题