CoreData 自定义数据类型
在CoreData中,Entity中Attribute的类型只有固定的几种可选。如下图:
如果我们要想直接存放UIImage到数据库,如何做?
1.在coredata中新建的attribute中类形选择Transformable. 意思表示这个字段是自定义的类型。
2.在生成的NSManagedObject文件中,将类型id改为自己想要的类型,如UIImage.
3.在xcode中字段的attribute中 name那一行写你转化的类,如写下面的注册的UIImageToDataTransformer
4.新建类:UIImageToDataTransformer,继承于NSValueTransformer。代码如下:
- @interface UIImageToDataTransformer : NSValueTransformer {
- }
- @end
- #import "UIImageToDataTransformer.h"
- @implementation UIImageToDataTransformer
- + (BOOL)allowsReverseTransformation {
- return YES;
- }
- + (Class)transformedValueClass {
- return [NSData class];
- }
- - (id)transformedValue:(id)value {
- return UIImagePNGRepresentation(value);
- }
- - (id)reverseTransformedValue:(id)value {
- return [[UIImage alloc] initWithData:value];
- }
- @end
5.在你的NSManagedObject中注册转化类,那么在存、取数据库的时候就会进行转化,如上面的UIImage 到 NSData, NSData到UIImage.
- + (void)initialize {
- if (self == [MyEntity class]) {
- UIImageToDataTransformer *transformer = [[UIImageToDataTransformer alloc] init];
- [NSValueTransformer setValueTransformer:transformer forName:@"UIImageToDataTransformer"];
- }
- }
这样就可以直接存UIImage类型的数据到数据库,实质还是存的二进制。如果是NSArray、NSDictionary等,可以使用归档。
非常重要的一点,进行了Transformable的的字段是不能进行like,contains,in这样的条件查询,只能是简单的字段名=XXX的查询。
转载自:http://blog.csdn.net/likendsl/article/details/8549333
CoreData 自定义数据类型相关推荐
- TVM自定义数据类型
TVM自定义数据类型 本文将介绍"自定义数据类型"框架,该框架可在TVM中使用自定义数据类型. 介绍 在设计加速器时,关键是如何近似地表示硬件中的实数.这个问题具有长期的行业标准解 ...
- 自主数据类型:在TVM中启用自定义数据类型探索
自主数据类型:在TVM中启用自定义数据类型探索 介绍 在设计加速器时,一个重要的决定是如何在硬件中近似地表示实数.这个问题有一个长期的行业标准解决方案:IEEE 754浮点标准.1.然而,当试图通过构 ...
- hadoop map reduce自定义数据类型时注意顺序,否则报错。
2019独角兽企业重金招聘Python工程师标准>>> 自定义数据类型,实现Writable接口,重写write方法和readFields方法时,在操作字段时,必须保证顺序,如果在w ...
- Qt信号与槽传递自定义数据类型——两种解决方法
Qt信号与槽传递自定义数据类型--两种解决方法 参考文章: (1)Qt信号与槽传递自定义数据类型--两种解决方法 (2)https://www.cnblogs.com/tid-think/p/9300 ...
- 【剑仙教程】易语言的结构体。自定义数据类型。
1楼. [剑仙教程]易语言的结构体.自定义数据类型. 在易语言中,有基本数据类型,自定义数据类型. 自定义数据类型,在C语言/C++中称为结构体.这是面向对象和类的编程. . . 先上代码.打开易语言 ...
- Oracle自定义数据类型 1
原文 oracle 自定义类型 type / create type 一 Oracle中的类型 类型有很多种,主要可以分为以下几类: 1.字符串类型.如:char.nchar.varchar2.nva ...
- 玩转C语言之自定义数据类型-typedef
玩转C语言之自定义数据类型-typedef 1 引言 引言:在C语言中没有提供字节类型,如果在工程中需要使用表示字节的变量时,该怎么办呢? 我们知道 1 个字节占用 8 个二进制位空间,解决这个问题的 ...
- go函数详解:函数定义、形参、返回值定义规范、函数内存分析、不支持重载、支持可变参数、基本数据类型和数组默认都是值传递的、支持自定义数据类型、函数返回值命名
引入 [1]为什么要使用函数: 提高代码的复用型,减少代码的冗余,代码的维护性也提高了 [2]函数的定义: 为完成某一功能的程序指令(语句)的集合,称为函数. [3]基本语法 func 函数名(形参列 ...
- Go支持自定义数据类型:使用type来定义,类似于数据类型的一个别名
为了简化数据类型定义,Go支持自定义数据类型 基本语法: type 自定义数据类型名 数据类型 可以理解为 : 相当于起了一个别名 例如:type mylnt int ----->这时mylnt ...
最新文章
- appJSON[tabBar][0][pagePath] pages/basics/basics 需在 pages 数组中
- win10 UWP 应用设置
- ListElement QML类型
- Asp.Net Core 404处理
- 企业一般用php还是js,网站开发用php还是js
- 认证方案之初步认识JWT
- MyBatis学习总结(19)——Mybatis传多个参数(三种解决方案)
- JavaScript二进制、八进制和十六进制数值
- 【Oracle】数据库范式
- python哈希类型_Python散列类型和运算符
- 曹雪芹诗歌中的鸿蒙,红楼一梦开辟相痴鸿蒙诗歌
- 大数据热的冷思考:无法取代传统的新闻传播科研方法
- IntelliJ IDEA全界面汉化(官方插件)
- office出现错误无法安装的解决办法
- Google advertiser api开发概述——入门指南
- (附源码)springboot+mysql+采用协同过滤算法的视频推荐系统的设计与实现 毕业设计261620
- Spring 项目启动错误提示 LoggingApplicationListener
- SSH2完美整合流程
- 低代码和云开发 区别
- lammps教程:Cu孪晶建模方法
热门文章
- Spring详解(八)------事务管理
- Go语言入门——Go语言环境搭建
- Open Live Writer测试
- Redis数据存储解决方案
- android如何与服务器交互?
- PHPCMS V9 按浏览次数排行调用文章
- 数据库基础知识——变量
- 计算机网络(二十四)-路由算法及路由协议
- php为图片添加渐变背景,HTML_CSS实例:通过定义渐变边框给图片加阴影,一般我们可以使用背景图的方 - phpStudy...
- slow log php,善用php-fpm的慢执行日志slow log,分析php性能问题