Core data 如何将谓词转换为实体';s定制属性

Core data 如何将谓词转换为实体';s定制属性,core-data,properties,entity,nspredicate,Core Data,Properties,Entity,Nspredicate,这个问题对我们来说是一个持续的问题 我想做一个谓词来根据我的自定义属性过滤实体,这是实体类 @interface Expense : NSManagedObject @property (nonatomic, retain) NSDate * date; @property (nonatomic, retain) NSNumber * amount; @property (nonatomic, retain) NSString * category; @property (nonatomic,

这个问题对我们来说是一个持续的问题

我想做一个谓词来根据我的自定义属性过滤实体,这是实体类

@interface Expense : NSManagedObject

@property (nonatomic, retain) NSDate * date;
@property (nonatomic, retain) NSNumber * amount;
@property (nonatomic, retain) NSString * category;
@property (nonatomic, retain) NSString * note;
@property (nonatomic, retain) NSString * paidby;

//customized property
@property (readonly) int year;
@property (readonly) int month;
@property (readonly) NSString *yyyy_mmm;
@property (readonly) NSString *mm_yyyy;

@end
这是我的谓词:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"yyyy_mmm == %@", header];
运行时:

错误消息NSInvalidArgumentException',原因:'keypath yyyy\u mmm 在实体中找不到

这并不是完全出乎意料的,我搜索并发现它与键值、侦听器之类的东西有关。但我不知道该怎么办


任何帮助都将不胜感激,顺便说一句,编码块有一些问题,请原谅。

将谓词中需要使用的任何属性设置为数据模型中实体的实际键。如果你能直接设定值,那就好了。如果不需要,您可以实现
将保存
或使用
KVO
并从实体中的其他值更新谓词键值。

核心数据获取请求(基于SQLite)的谓词只能使用持久属性,不能使用瞬时属性,也不能使用自定义属性,
yyyy\u mmm
在您的模型中不存在,如Martin所述。@flexaddicted我想选择特定年份和月份的所有费用。现在我知道该做什么了,我选择并将所有数据保存到NSArray,并使用predicate来过滤数组,以及可以使用属性进行过滤的费用模型。但恐怕这不是最好的办法。