Objective-C 核心数据:从孩子的孩子访问数据

Posted

技术标签:

【中文标题】Objective-C 核心数据:从孩子的孩子访问数据【英文标题】:Objective-C Core Data: Access data from child of child 【发布时间】:2010-10-28 14:10:38 【问题描述】:

我正在慢慢地为我的 iPad 应用程序找出核心数据,但我似乎无法弄清楚如何从我的 to-many 孩子(他们也有 to-many 孩子)访问数据。我希望从这里的专家那里得到一些代码示例。

让我们使用一个简单的数据结构:Parent -(to many)-> Child -(to many)-> Toy

我可以很好地获取 Parent 并获取它的数据和孩子的 NSSet。之后,我就迷路了。

1) 从 Child 获取数据的代码是什么样的(例如,获取特定 Child 的年龄或 NSSet 中所有孩子的年龄?

2) 我将如何获得特定孩子拥有的玩具的 NSSet? (还假设访问玩具数据与 #1 代码相同)。

衷心感谢您的帮助!这应该更容易......不是吗?

谢谢!

【问题讨论】:

【参考方案1】:

1) 所有孩子的年龄:NSSet *ages = [parent.children valueForKey: @"age"];

要获取特定的孩子,您需要指定该孩子。您可以只使用[parent.children anyObject],但您可能关心您得到的答案,在这种情况下您可以过滤集合。查看NSSet 文档,特别是filteredSetUsingPredicate 方法。

2) 得到您的特定孩子后,您只需询问其 toys 属性即可。

比什么容易?

【讨论】:

比... SQLlite 或平面数据库更容易?感谢您的帮助! [parent.child anyObject] 会返回 NSManaged 对象还是 Child 对象? @Matt:取决于您的托管对象模型。默认情况下,它将是一个 NSManagedObject。【参考方案2】:

如果这一行:

NSSet *children = [parent children];

然后为您获取子对象的NSSet

NSManagedObject *child = [[parent children] anyObject];

应该给你一个(随机的)子对象。从这个对象你应该能够做到

NSNumber *age = [child age];
NSSet *toys = [child toys];

还是我错过了问题中的某些内容?

【讨论】:

以上是关于Objective-C 核心数据:从孩子的孩子访问数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在Objective-C中将孩子分配给父母?

如何从子类访问父类数据成员,当父母和孩子的日成员具有相同的名称时

从多个类访问核心数据

React,如何从父母那里访问孩子的状态?无需更新父母的状态

如何从孩子的父母访问模板引用变量?

数据结构_二叉树后序遍历