Основные данные: использование неопределенного переходного атрибута - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь использовать неопределенный атрибут, который также является временным. Атрибут имеет тип 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

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 22 июня 2011

Итак, вы определили геттер -abRecordPerson, но вы создали -setAbPersonRecord?Кажется, ошибка указывает на то, что вы этого не сделали, и похоже, что это корень проблемы.

...