2010-10-28 44 views
1

我正在慢慢计算出我的iPad应用程序的核心数据,但我似乎无法弄清楚如何从我的一对多儿童中访问数据(谁也有许多孩子)。我希望能从这里的专家那里得到一些代码示例。Objective-C核心数据:从子女的孩子访问数据

让我们用一个简单的数据结构:父 - (许多) - >儿童 - (许多) - >玩具

我可以获取父就好了,并得到它的数据和儿童的NSSet。之后,我迷路了。

1)什么将代码看起来象从一个孩子获得的数据(比如,得到一个特定的孩子的年龄和所有的孩子们的年龄在NSSet中?

2)我怎么会那么得到的的NSSet玩具特定的孩子有? (还假设访问玩具数据将与#1代码相同)。

我真诚感谢您的帮助!这应该是容易的...不是吗?

谢谢!

回答

1

如果该行:

NSSet *children = [parent children]; 

让你的孩子的NSSet对象然后

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

应该让你一个(随机)子对象。从这个对象你应该只能做

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

或者我错过了什么问题?

2

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

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

2)得到了你的孩子后,你只需要询问它的toys属性。

比什么更容易?

+0

比... SQLlite还是平面数据库更容易?谢谢您的帮助! – 2010-10-28 14:53:07

+0

[parent.child anyObject]是否会返回一个NSManaged对象或一个Child对象? – 2010-10-28 16:14:21

+0

@Matt:取决于您的托管对象模型。默认情况下,它将是一个NSManagedObject。 – 2010-10-28 16:37:44