too*_*oom 3 setter overriding core-data ios ios5
我需要在setter方法中做一些额外的事情.但这样做时我得到一个无限循环:
我有一个核心数据对象
@interface Transaction : NSManagedObject
@property (nonatomic, retain) NSDate * date;
@end
@implementation Transaction
@dynamic date;
-(void)setDate:(NSDate *)date
{
self.date = date;
//additional stuff omitted
}
Run Code Online (Sandbox Code Playgroud)
所以,在那种情况下,我得到一个无限循环.好的,所以我在网上搜索并按以下方式修改我的代码,对于每个版本,我都会遇到编译器错误
版本1:
@interface Transaction : NSManagedObject
@property (nonatomic, retain) NSDate * date;
@end
@implementation Transaction
@dynamic date;
-(void)setDate:(NSDate *)date
{
self->date = date; //Error: Property 'date' found on object 'Transaction *'; did you mean to access it with the "." operator?
//additional stuff omitted
}
Run Code Online (Sandbox Code Playgroud)
版本2:
@interface Transaction : NSManagedObject
@property (nonatomic, retain) NSDate * date;
@end
@implementation Transaction
@dynamic date = _date; //Error: Expected ';' after @dynamic
-(void)setDate:(NSDate *)date
{
_date = date;
//additional stuff omitted
}
Run Code Online (Sandbox Code Playgroud)
现在,我问自己该怎么做?
我的问题的解决方案:
@interface Transaction : NSManagedObject
@property (nonatomic, retain) NSDate * date;
@end
@implementation Transaction
@dynamic date;
-(void)setDate:(NSDate *)date
{
[self setPrimitiveValue:date forKey:@"date"];
//additional stuff omitted
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4883 次 |
最近记录: |