Добавить существующую ссылку на объект к другому объекту
У меня есть несколько 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;