令人困惑的CoreData问题:setAttribute无效

时间:2013-10-20 16:15:16

标签: ios objective-c core-data

我有这个对象(删除了不相关的属性):

HFAppointment; id: 0xd8ec6f0 <x-coredata://2AA46AB1-11AF-431B-9289-63DEFCDAFED6/HFAppointment/p2> ; data: {
    cost = 60;
    deleted = 0;
})

除了这个简单的代码:

[appointment setDeleted:[NSNumber numberWithInt:1]];
[appointment setCost:[NSNumber numberWithInt:1]];

问题是运行此代码后我得到:

HFAppointment; id: 0xd8ec6f0 <x-coredata://2AA46AB1-11AF-431B-9289-63DEFCDAFED6/HFAppointment/p2> ; data: {
    cost = 1;
    deleted = 0;
})

NSManagedObject子类如下所示:

部首:

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@interface HFAppointment : NSManagedObject

@property (nonatomic, retain) NSNumber * cost;
@property (nonatomic, retain) NSNumber * deleted;

@end

实现:

#import "HFAppointment.h"

@implementation HFAppointment

@dynamic cost;
@dynamic deleted;

@end

就是这样,我没有为该课程定制的定制者或吸气剂。我在整个项目中搜索了deleted的出现,它只在谓词中使用,没有其他类使用该setter。

我尝试删除并重新创建NSManagedObject子类但没有成功。我也尝试从模拟器中删除应用程序,并做了一个干净的构建无济于事。

对于记录,deleted属性如下所示(更改为整数32和/或删除默认值和/或使用int32_t而不是NSNumber无效):

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

在无休止地寻找无数个小时之后,事实证明解决方案很简单,虽然模糊不清。

This article让我发现deleted显然是CoreData中的保留关键字。只需重命名属性即可解决问题。我找不到这些关键字的列表来备份我的答案,所以如果有人知道这样的列表,请随时发布。

NSPropertyDescription documentation确实提到了optionaltransientreadOnly,但这就是我能找到的所有内容,而且不能明确表示不得使用它们。< / p>

令人讨厌的部分是XCode从未发出任何与此相关的警告,所以它真的是猜测工作。