Objective c 获取NSManagedObject的NSArray的最简单方法
这是一个非常基本的问题,但我正在努力寻找答案。我有一个名为iSelectedObject的Objective c 获取NSManagedObject的NSArray的最简单方法,objective-c,xcode,macos,nsarray,nsarraycontroller,Objective C,Xcode,Macos,Nsarray,Nsarraycontroller,这是一个非常基本的问题,但我正在努力寻找答案。我有一个名为iSelectedObject的NSManagedObject 假设我以后有一个条件,从NSOutlineView中提取representedObject,或者从NSArrayController中提取selectedObjects,这取决于(与此问题无关)条件,然后我需要运行一个方法,该方法需要将NSManagedObject提供给它。当我从NSOutlineView中为它提供representedObject时,它工作得很好-以这种方
NSManagedObject
假设我以后有一个条件,从NSOutlineView
中提取representedObject
,或者从NSArrayController
中提取selectedObjects
,这取决于(与此问题无关)条件,然后我需要运行一个方法,该方法需要将NSManagedObject
提供给它。当我从NSOutlineView
中为它提供representedObject
时,它工作得很好-以这种方式选择时,它自然是一个NSManagedObject
。但是,如果我抓取我的NSArrayController
的selectedObjects
,它就是一个NSArray
,我无法将它提供给我的方法
我知道NSArray
可以包含NSManagedObject
,我觉得解决方案可能很简单,只需深入我的NSArray
或类似的东西一个层次,但我如何将我的NSArray
提供给我的方法,该方法需要和NSManagedObject
。我应该以某种方式提取/转换它吗
(作为帮助:我甚至尝试将
NSArray
提供给该方法的原因是,它和可选的NSManagedObject
都有相同的数据保存在内部。也就是说,如果我使两个函数完全相同,其中一个函数需要NSArray
,另一个函数需要NSManagedObject
,那么它们工作得很好y、 我可以分别选择一个NSArray
或NSManagedObject
的唯一原因是,这似乎是selectedObjects
和representedObject
分别吐出的默认值。如果我可以为这两个对象分别拔出一个或另一个,这将是一个完美的解决方案,但我不确定如何做到这一点o、 )如果NSArray只包含一个对象,您可以使用
[array lastObject];
如果有多个对象,则运行数组并使用
[object isKindOfClass:[NSManagedObject class]];
无论哪种方式,这都会给你一个NSManagedObject,你可以用它来做你的方法。我可以将方法改为使用类型
id
,而不是NSManagedObject
,这就停止了它的抱怨。那么这个神秘的方法对数组和单个对象都有效,它做了什么呢de,理解您遇到的问题会容易得多。如果传递给方法的类型不重要,您可以将参数声明为typeid
,您就完成了。啊哈!我认为id
可能会很好地解决这个问题!谢谢!我已经非常具体地避免了id
很久了,所以我没有这么做甚至可以考虑在这里使用它。谢谢。不适用于这种特殊情况,但通常是这样,这是一个很好的答案。