【问题标题】:Add existing object reference to a different entity将现有对象引用添加到不同的实体
【发布时间】:2013-07-23 15:53:58
【问题描述】:

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

我有第二个名为 WordSets 的 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,选择第二个table view item并调用outlet后:

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 的对象的骨架,我似乎无法访问。

Object WordSets 有一个 1-many with word,反之亦然,但我似乎无法处理对象以添加关系。

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

[wordsetsObject addWordObject:wordObject];

这是怎么做到的???

【问题讨论】:

    标签: core-data nstableview kvc


    【解决方案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;
    

    【讨论】:

    • 感谢您的回复!! “如果你有对你的对象的引用” - 这一切都是为了获得对对象的引用!这就是我想要弄清楚的......如何从 _wordArrayController.selectedObjects 中提取对给定数据结构的对象的引用?
    • 那么您的日志中的对象是正确的吗?然后你用selectedObjects[0] 得到它。
    • 真的!原来的问题解决了!奖金回合!好的,现在 word 对象链接到 wordset 对象。下一个任务:如何只检索链接的关系项!使用谓词获取请求?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    相关资源
    最近更新 更多