Я пытаюсь использовать неопределенный атрибут, который также является временным. Атрибут имеет тип 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;
Я получаю сбой независимо от того, закомментирована ли последняя строка или нет. Если это закомментировано, это дает мне эту ошибку:
Неразрешенная ошибка Ошибка
Домен = NSCocoaErrorDomain Код = 1570
«Операция не может быть завершена.
(Какао ошибка 1570.)
UserInfo = 0xe0138c0
{NSValidationErrorObject = (entity: Person; id:
0xc611e10
; данные: {
abGlobalID = 6;
abRecordPerson = nil; })
Кажется, что abRecordPerson равен nil, поэтому я попытался установить его, но затем я получаю эту ошибку:
CoreData: ошибка: свойство
'setAbRecordPerson:' является скалярным типом
в классе «Персона», который не соответствует
скалярный тип свойства его сущности.
Динамически генерируемые средства доступа не
поддерживать неявное приведение типов.
Невозможно сгенерировать метод установки для
Это.
2011-06-21 20: 07: 18.100
TestCoreDataLab [79616: 207] - [Персона
setAbRecordPerson:]: не распознан
селектор отправлен на экземпляр 0x6d10f40
Любая помощь будет принята с благодарностью.