2013-10-08 54 views
-1

核心數據已自動生成我的NSManagedObject的子類。我的實體包含布爾型名爲isActive。當子類自動生成時,此屬性的類型爲NSNumber。由於這是一個布爾值,我必須編寫如下代碼:核心數據:在自動生成的實體類中使用布爾值

if ([myEntity.isActive boolValue]) 

我覺得我很奇怪。解決這個問題的最好方法是什麼?

回答

2

沒有什麼要解決,真的,這是正常的,按預期工作。

如果您只是不喜歡它,請在生成子類時選中標記爲「使用基本數據類型的標量屬性」的複選框。布爾屬性將生成爲BOOL,因此不會有任何理由對其調用boolValue

您還提到了當您這樣做時,最終爲NSTimeInterval的日期屬性。我同意,這很煩人。但是:您可以混合匹配標量和對象屬性。關於生成步驟沒有什麼魔力,你看到的代碼就是它的全部。因此,產生使用標量屬性,它給你這樣的:

@property (nonatomic) NSTimeInterval myDate; 

然後,只需編輯該行看起來像這樣:

@property (nonatomic, retain) NSDate * created; 

但留下您的isActive財產原樣。瞧,標量訪問一個屬性,但對象式訪問另一個。

+0

我以前曾試過。但後來我的'NSDate'變成了'NSTimeInterval',這看起來很奇怪? – dhrm

+0

@ DennisMadsen:請參閱http://stackoverflow.com/a/15885204/1187415如何處理存儲爲標量值的Date屬性。 –

+0

@DennisMadsen:看到編輯,你可以有兩種方式。 –

1

當您使用「創建NSManagedObject子類」選項生成子類時,必須取消選中「對基元數據類型使用標量屬性」複選框。