生活随笔
收集整理的這篇文章主要介紹了
CoreData 自定义数据类型
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在CoreData中,Entity中Attribute的類型只有固定的幾種可選。如下圖:
如果我們要想直接存放UIImage到數(shù)據(jù)庫,如何做?
1.在coredata中新建的attribute中類形選擇Transformable. ?意思表示這個(gè)字段是自定義的類型。
2.在生成的NSManagedObject文件中,將類型id改為自己想要的類型,如UIImage. ?
3.在xcode中字段的attribute中 name那一行寫你轉(zhuǎn)化的類,如寫下面的注冊的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中注冊轉(zhuǎn)化類,那么在存、取數(shù)據(jù)庫的時(shí)候就會(huì)進(jìn)行轉(zhuǎn)化,如上面的UIImage 到 NSData, NSData到UIImage.?
+?(void)initialize?{?? ????if?(self?==?[MyEntity?class])?{?? ????????UIImageToDataTransformer?*transformer?=?[[UIImageToDataTransformer?alloc]?init];?? ????????[NSValueTransformer?setValueTransformer:transformer?forName:@"UIImageToDataTransformer"];?? ????}?? } ? 這樣就可以直接存UIImage類型的數(shù)據(jù)到數(shù)據(jù)庫,實(shí)質(zhì)還是存的二進(jìn)制。如果是NSArray、NSDictionary等,可以使用歸檔。
非常重要的一點(diǎn),進(jìn)行了Transformable的的字段是不能進(jìn)行l(wèi)ike,contains,in這樣的條件查詢,只能是簡單的字段名=XXX的查詢。
轉(zhuǎn)載自:http://blog.csdn.net/likendsl/article/details/8549333
總結(jié)
以上是生活随笔為你收集整理的CoreData 自定义数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。