gpt4 book ai didi

iphone - 核心数据/ cocoa : @distinctUnionOfObjects not returning a usable NSArray*

转载 作者:太空狗 更新时间:2023-10-30 03:58:07 24 4
gpt4 key购买 nike

我有一个使用 Core Data 的应用程序,它具有我想作为分组依据的关系。我的 .xcdatamodel 文件生成了 NSManagedObject 类,大部分情况下一切正常。

鉴于 parent /子女关系,我想做以下事情:

parent 有一个 child 的集合。 children 有一个属性 groupByProperty,我想对其进行分组。

以下代码:

NSSet *allChildren = parent.children;
NSArray *groups = [allChildren valueForKeyPath:@"@distinctUnionOfObjects.groupByProperty"];
Child *child = [groups objectAtIndex:x]; //x is the row that I would like to retrieve

尝试设置子指针时产生 NSInvalidArgumentException。

但是,当我这样做时:

NSSet *allChildren = parent.children;
NSArray *groups = [[NSArray alloc] initWithArray:[allChildren valueForKeyPath:@"@distinctUnionOfObjects.groupByProperty"]];
Child *child = [groups objectAtIndex:x]; //x is the row that I would like to retrieve

一切正常。

谁能解释这种行为?我快要疯了,想弄清楚这是如何工作的。

在此先感谢您提供的任何帮助...

克里斯

最佳答案

因此,我从这份 Apple 文档中获得了我的信息:Set and Array Operators ,其中声明“@distinctUnionOfObjects 运算符返回一个数组,其中包含通过向接收器中的每个项目发送 valueForKeyPath 返回的不同对象,并将键路径传递到数组运算符的右侧。” 我假设返回的对象是一个 NSArray,因为它说的是“Array”,而实际上它应该说的是“Array or Set”。我将返回的对象更改为 NSSet,然后使用 [[groups allObjects] objectAtIndex:x] 将我的对象从那里取出。

现在看起来像这样:

NSSet *allChildren = parent.children;
NSSet *groups = [allChildren valueForKeyPath:@"@distinctUnionOfObjects.groupByProperty"];
Child *child = [[groups allObjects] objectAtIndex:x]; //x is the row that I would like to retrieve

感谢您的帮助,我想我只需要更仔细地查看异常,这里的关键是“-[NSCFSet objectAtIndex:.....”

关于iphone - 核心数据/ cocoa : @distinctUnionOfObjects not returning a usable NSArray*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1700803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com