我正在尝试使用也是Transient的Undefined属性。该属性的类型为ABRecordRef(它甚至不是Objective-C中的对象),我可以使用ABRecordID获取对象,这是我在模型中持久化的int32。
我轻松搞定了吸气剂:
- (ABRecordRef) abRecordPerson
{
ABAddressBookRef book = ABAddressBookCreate();
ABRecordRef record = ABAddressBookGetPersonWithRecordID(book, [self.abGlobalID intValue]);
return record;
}
这很好,直到我尝试保存一个新对象:
Person *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
newManagedObject.abGlobalID = [NSNumber numberWithInt: recordID];
//newManagedObject.abRecordPerson = person;
我是否有最后一行被注释掉,我遇到了崩溃。如果它已被注释掉,它会给我这个错误:
未解决的错误错误 Domain = NSCocoaErrorDomain Code = 1570 “这项行动无法完成。 (可可错误1570.)“ 的UserInfo = 0xe0138c0 {NSValidationErrorObject =(entity:Person; id: 0xc611e10 ;数据:{ abGlobalID = 6; abRecordPerson = nil; })
似乎认为abRecordPerson是零,所以我试着设置它,但后来我得到了这个错误:
CoreData:错误:属性 'setAbRecordPerson:'是标量类型 在类'人'上不匹配 它的实体属性的标量类型。 动态生成的访问器不会 支持隐式强制。 无法生成setter方法 它。 2011-06-21 20:07:18.100 TestCoreDataLab [79616:207] - [人 setAbRecordPerson:]:无法识别 选择器发送到实例0x6d10f40
非常感谢任何帮助。
答案 0 :(得分:0)
所以你已经定义了getter -abRecordPerson
,但是你创建了一个-setAbPersonRecord
吗?错误似乎表明你没有,看起来这就是问题的根源。