ios - 使用 arc 和 dynamic 属性覆盖 setter

标签 ios core-data ios5 overriding setter

我需要在 setter 方法中做一些额外的事情。但是这样做时我得到了一个无限循环:

我有一个核心数据对象

@interface Transaction : NSManagedObject 
@property (nonatomic, retain) NSDate * date;
@end

@implementation Transaction
@dynamic date;

-(void)setDate:(NSDate *)date
{
    self.date = date;
    //additional stuff omitted
}

所以,在这种情况下,我得到了一个无限循环。好的,所以我在网上搜索并按以下方式修改了我的代码,对于每个版本我都会遇到编译器错误

版本 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
}

版本 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
}

现在,我问自己如何做到这一点?

最佳答案

我的问题的解决方案:

@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
}

关于ios - 使用 arc 和 dynamic 属性覆盖 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8545799/

相关文章:

ios - Twitter iOS API 是否提供任何方法来确定推文是否成功?

objective-c - 如何在 UITextfield 中输入时和输入后放置货币符号?

iOS 如何通过编码打开电话簿

ios - 如何在 iOS 中保存/恢复 View 状态?

ios - 从核心数据获取图像

ios - 将 CoreData 实现到 TableView 时出现问题

iOS手机启动画面神秘图像

iPhone Cocos2D - 将 float 转换为 GLubyte

ios - 如何使用更新后的数据刷新 NSManagedObject - Core Data

第一次点击时未调用 UITableView didSelectRowAtIndexPath