将现有对象引用添加到其他实体

时间:2013-07-23 15:53:58

标签: core-data nstableview kvc

我有一些名为Word的NSManaged Objects,他们是自己的一套。预先填充的 单词对象列表及其相关属性。

我有一个名为WordSet的第二个NSManaged对象,它包含一个部分 Word对象列表。 (一对多)

我试图了解如何将WordSet连接到预先存在的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,我似乎无法访问。

对象WordSet有1个单词,反之亦然,但我似乎无法获得对象的句柄以添加关系。

我猜我在KVC的土地上做错了什么。 NSlog在那里有对象id,所以FWIG的任务是获取_wordArrayController.selectedObjects中的数据,获取所选对象的句柄,然后将该对象添加到WordSets实例,即:

[wordsetsObject addWordObject:wordObject];

这是怎么做的?

1 个答案:

答案 0 :(得分:0)

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;