2011-03-04 63 views
0

我想從我的部分名稱的一對多關係中獲取一組值。我的fetchRequest實體被設置爲單個實體,並且我想爲sectionNameKeyPath使用(例如)@「to_many.attribute1」。但是,我只想使用其中的某個子集來排序實體。如何從一對多關係的子集中獲取sectionNameKeyPath?

是否有一種方法可以將謂詞添加到sectionNameKeyPath?

或者,我恐怕我可能需要重新創建我的數據模型,以便數據更容易訪問嗎?

回答

0

當我的sectionNameKeyPath需要引用非平凡的東西時,我使用的一個選項是向我的模型中添加一個新屬性並將其標記爲Transient。

然後,您可以向託管對象添加一個類別,該類別具有一個根據您的規則計算字段的getter。

@implementation MyObject (SectionKeyPathAdditions) 

-(NSDate *)toManyAttribute1Date // This is the new transient attribute name 
{ 
    NSDate *dynamicReturnDate = [NSDate date]; 
    // use app logic to grab the subset of valid dates from attribute1 
    return dynamicReturnDate; 
} 
+0

這聽起來很有希望!謝謝! – Sage 2011-03-04 21:03:11

+0

雖然這會起作用,但對於大量數據而言,它可能需要大量資源。瞬態方法要求在對瞬態值進行評估之前對對象進行實例化。 – TechZen 2011-03-05 15:08:02

0

你謂詞會是這樣的:

ALL to_many.attribute1=="something" 

的一切及任何運營商的搜索設置這是何等的多對多關係的回報。雖然,你不能菊花鏈,例如

ALL to_many.another_to_many.attribute1 
+0

是的,但我想知道具體是否可以將謂詞添加到sectionNameKeyPath。 – Sage 2011-03-04 21:01:39

+0

如果你的意思是NSFetchedResultsRequest的sectionNameKeyPath,那麼沒有。如果你想改變默認的段名稱行爲,你必須繼承NSFetchedResultsRequest的子類。 – TechZen 2011-03-04 23:38:03

相關問題