2016-03-15 45 views
2

我有一個名爲Recipient的coredata實體。我需要根據他們名字的第一個字符對收件人進行分組。我正在使用fetechedresults控制器。我需要一個屬性,我可以提供給NSFetchedResults控制器以將其用作區段鍵。這個屬性不需要保存在coredata中。所以我想創建一個Transient屬性併爲該屬性提供我自己的setter和getter實現。如何聲明coredata實體中的瞬態變量

應用程序崩潰,說沒有收件人實體中找到這樣的屬性。請幫忙。

在Recipient.h我

@interface Recipient : NSManagedObject 
@property (nonatomic, retain) NSString *name; 
@property (nonatomic, retain) NSString * namesFirstCharacter; 
@end 

在Recipient.m我

@dynamic name; 
@ dynamic namesFirstCharacter; 

-(NSString *) namesFirstCharacter{ 
//my coide to return first character of name 
} 

回答

1

不要使用瞬態特性。相反,只需創建一個方法或定義一個readonly屬性,並將方法或屬性名稱提供給FRC。

+0

不工作:(我在Recipient.h中爲namesFirstCharacter聲明瞭readonly屬性,然後爲此寫了我自己的getter,爲NSFetchedResults提供了namesFirstCharacter作爲節鍵控制器崩潰,說「keypath namesFirstCharacter not found in Recipient entity」:( –

+0

我已經多次使用過該技術,請顯示FRC的屬性定義和設置。 – Avi

+0

嗨,是的,你是正確的:)事實上,我聲明一個瞬態屬性我顯示的方式甚至沒有錯:)錯誤並不是因爲FecthedResultsController部分的關鍵,實際上我已經在它上面寫了一個排序描述符,並且該排序描述符正在使用瞬態屬性:)我再次閱讀文檔「文檔清楚地表明,我們只能使用瞬態屬性僅用於節關鍵路徑不應該用在排序描述符中「正如我看到的那樣或者我認爲我宣稱它是錯誤的,但實際情況是排序描述符的用法是錯誤的。Thnks fr the help :) Up-voting your ans –