程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Core Data淺談系列之十 : 關於數據模型中實體的屬性

Core Data淺談系列之十 : 關於數據模型中實體的屬性

編輯:C++入門知識

之前寫了《Core Data淺談系列匯總》,今天稍微回顧了下,做些補充。

在這個系列的第一篇《基礎結構》中(2013年1月份的文章,時間過得好快啊!),有簡單帶過Entity的Attribute:

數據類型、布爾值統一用NSNumber來表示;字符串類型用NSString表示;時間類型用NSDate表示;二進制數據類型用NSData表示;非標准類型用Transformable來表示;

而Attribute還有其自身的Properties,比如Transient表示不用持久化到磁盤,Optional表示非必填字段(如果必填字段為空保存時會出錯),Indexed則表示索引字段。

這裡主要討論下Binary Data和Transformable兩種。

以存儲UIImage為例,如果使用Binary Data類型來存儲,那麼字段設為對應類型:

\

@property (nonatomic, retain) NSData * image;

在賦值之前需要將UIImage先轉為NSData類型。這一步對於UIImage類型來說可能比較方便,可以直接調用類似
UIKIT_EXTERN NSData *UIImagePNGRepresentation(UIImage *image);
的函數進行轉換,不過如果對於其它類型,尤其是自定義的類型來說,每次都要如此操作則顯得很麻煩,使用Transformable類型可以通過NSValueTransformer及其擴展來優化這個步驟:

#import 

@interface UIImageTransformer : NSValueTransformer

@end

如果是自定義Person結構,可能就叫做DIYPersonTransformer。

\

有了這麼個Transformer,可以在面板裡面進行指定,但在其可以順利工作之前需要提供幾個方法:

<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD48cHJlIGNsYXNzPQ=="brush:java;">+ (BOOL)allowsReverseTransformation { return YES; }
表示可以雙向轉換,寫進去和讀出來都是通的。

+ (Class)transformedValueClass { 
    return [NSData class];
}

表示實際存儲的類型。

- (id)reverseTransformedValue:(id)value
{
    //
}

- (id)transformedValue:(id)value
{
    // 
}

表示實際的轉換方法。

但是說到使用Core Data存儲UIImage這個話題,這裡有更進一步的討論:

http://stackoverflow.com/questions/4158286/storing-images-in-core-data-or-as-file

http://stackoverflow.com/questions/16685812/how-to-store-an-image-in-core-data

而關於上面討論的內容,也有一些相關鏈接:

http://stackoverflow.com/questions/14256762/what-is-the-difference-between-transformable-and-binary-data

http://stackoverflow.com/questions/6783091/when-not-to-use-core-data-type-transformable

http://stackoverflow.com/questions/1562676/best-practice-array-dictionary-as-a-core-data-entity-attribute

http://stackoverflow.com/questions/3014498/what-can-i-do-with-an-transformable-attribute-type-in-core-data-on-the-iphone


Brief Talk About Core Data Series, Part 10 : About NSEntityDescription's Attributes
Jason Lee @ HangzhouBlog : http://blog.csdn.net/jasonblogWeibo : http://weibo.com/jasonmblog


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved