【发布时间】:2016-02-26 00:46:26
【问题描述】:
我正在关注[NSManagedObject valueForKeyPath:...],然后检查该查询返回的结果以查看它是单个 NSManagedObject 还是托管对象的 NSSet。如果它是一个 NSSet,我正在尝试使用 [NSSet allObjects] 将它转移到一个 NSArray
它没有按预期返回 NSSet 成员的 NSArray。
guids = [结果 allObjects]
result 实际上是一个 NSSet,但它给了我一个包含 NSSet 的数组。
当我询问数组中有多少对象时,我得到的答案是“1”...
[guids count] // 返回 1
NSArray *guids;
id result = [someNSManagedObject valueForKeyPath:kvcPath];
if ([result isKindOfClass:[NSSet class]])
{
guids = [result allObjects];
}
即使用枚举器和 NSMutableArray 替换 guids = [result allObjects] 也不起作用...
if ([result isKindOfClass:[NSSet class]])
{
NSEnumerator *setEnumerator = [result objectEnumerator];
NSString *value;
while (value = [setEnumerator nextObject]) {
[guids addObject:value];
}
}
看下面的图片(搞笑),枚举器应该查看集合中的单个值,但它却将整个集合视为值。
【问题讨论】:
-
将物品放入套装的代码是什么?
-
我正在关注一个核心数据关系,如你所知,它要么给你一个 NSManagedObject,要么给你一个 NSManagedObject 的 NSSet,这取决于它在关系中找到的项目数。
-
这听起来更像是一个咆哮而不是一个问题,这里真的没有任何东西可以帮助您。只是陈述事实。显示代码。例如,什么是 rpInfo?等等……
-
rpInfo 是一个 NSManagedObject
-
看起来您有一个集合,其中包含另一个包含字符串的集合。
标签: objective-c nsarray nsset