Добавить существующую ссылку на объект к другому объекту

У меня есть несколько NSManaged объектов под названием Word, которые являются их собственным набором. Предварительно заполненный список объектов слова и связанных с ними свойств.

У меня есть второй NSManaged Object под названием WordSets, который должен содержать частичный список объектов Word. (один ко многим)

Я пытаюсь понять, как связать WordSets с уже существующими объектами Word.

У меня есть tableView, где я могу выбрать объект слова. У меня есть кнопка добавления, которая вызывает розетку для следующего кода...

NSInteger row = [_wordsTableInEditWindow selectedRow];
NSLog(@"Add Selected: %ld", (long) row);
[_wordArrayController setSelectionIndex:row]; // set selected row
NSLog(@"Word? %@", _wordArrayController.selectedObjects);

NSLog, после выбора второго элемента представления таблицы и вызова торговой точки:

2013-07-23 00:50:26.074 Words Admin[19540:303] Add Selected: 1
2013-07-23 00:50:26.075 Words Admin[19540:303] Word? (
"<Word: 0x1006cc370> (entity: Word; id: 0x10068a830 
<x-coredata://912FFFF6-E367-4787-8ECE-C279EC0B94B8/Word/p106> ; data: 
{\n    audioFile = \"bird.caf\";\n    context = \"BBBBird is the word!\";\n    
wordSetRel = \"<relationship fault: 0x1006e0850 'wordSetRel'>\";\n})"
)

На самом деле я не понимаю, что мне нужно / нужно только добавить ссылку на объект.

У меня есть и выбор таблицы, и, по-видимому, скелет объекта, который, как представляется, каким-то образом встроен в NSArray, к которому я не могу получить доступ.

У объекта WordSets есть 1-много со словом, и наоборот, но я не могу получить ручку объекта, чтобы добавить связь.

Я предполагаю, что я делаю что-то не так на земле KVC или что-то в этом роде. NSlog имеет идентификатор объекта прямо здесь, поэтому FWIG задача состоит в том, чтобы взять данные в _wordArrayController.selectedObjects, получить дескриптор выбранного объекта, а затем добавить этот объект в экземпляр WordSets, то есть:

[wordsetsObject addWordObject:wordObject];

Как это сделать???

1 ответ

Решение

NSLog будет показывать только то, что в данный момент выбрано из базы данных. "Ошибка в отношениях" означает просто, что информация об объекте отношений еще не получена. Это будет - удобно - когда это необходимо.

Если у вас есть ссылка на ваши объекты, и ваши отношения установлены правильно, вы можете просто установить отношения обычным способом.

word.wordSet = set;

или, что сложнее, с использованием методов доступа, генерируемых Core Data:

[wordSet addWordObject:word]; 

Затем сохраните и проверьте, работает ли он с

NSLog(@"The wordSet of the word “%@“ is “%@“.", 
   word.name, word.wordSet.name); 

Чтобы получить ссылку, просто используйте единственный элемент из выбранного списка:

Word *word = _selectedItems.count ? _selectedItems[0] : nil;
Другие вопросы по тегам