2011-07-31 28 views
1

我每次從數據庫中,我得到的所有對象獲取的對象。現在,我必須在表格視圖中獲取並顯示僅存儲在數據庫中的一些對象。如何獲取只有某些對象匹配一個布爾屬性

要做到這一點,我想在我的實體添加一個新的屬性,屬性BOOL這樣我就可以只獲取具有此屬性的值等於YES或NO根據情況的對象。

是否有可能做到這樣的事情?

我找到了方法NSFetchRequest類可以是有用的,但我不知道我是否可以用它來看到一個布爾值的不同值。

回答

3

這聽起來像你只是想用一個謂語。 NSPredicate Class Reference給出瞭如何使用它們的好主意。基本上,它會爲您的結果添加過濾器。例如,假設您有一個核心數據對象,其屬性爲myBool,它是BOOL(當然,存儲爲NSNumber)。要基於此篩選結果,您需要使用類似的方法

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myBool == %@", [NSNumber numberWithBool:YES]]; 
[fetchRequest setPredicate:predicate]; 

然後繼續照常。這將只返回值爲myBool的結果。這就是說,如果您使用請求來簡單地填充tableView,那麼使用NSFetchedResultsController可能會更好。如何實現它的一個很好的教程可以找到here

+2

+1我想補充一點,你不應該有一個屬性在數據模型中添加到實體公正所以它會顯示。實體屬性應該模仿應用程序處理的真實世界對象,事件或條件的屬性。例如,如果您與人打交道並且擁有「Person」對象,那麼您將擁有「firstName」屬性,而不是「displayInThirdView」屬性。第一個是真實人物的屬性,但後者是不屬於數據模型的實現細節。 – TechZen

+0

非常感謝你......這很好用;)我必須更頻繁地使用謂詞:D – matteodv

相關問題