2016-03-15 46 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 –