0

我有一个使用核心数据的 iOS 应用程序。我创建了一个与另一个对象有 toMany 关系的托管对象。该应用程序是用 RubyMotion 编写的。

在将“组”NSManagedObject 对象的“toMany”关系设置为 person 对象时,我调用:

group.addPersonObject( person )

但我想在调用它之前确保“addPersonObject”存在。我试过了

if group.respondsToSelector( "addPersonObject" ) 

但这似乎不起作用。我认为这是因为它是由核心数据动态创建的。

在我调用它之前判断它是否存在的好方法是什么?

从 stackoverflow 上的其他问题来看,respondsToSelect 似乎应该可以工作,因为我正在使用该类的一个实例,但情况似乎并非如此。

4

2 回答 2

1

尝试:

if group.respond_to?("addPersonObject:")

这应该有效。: 是必需的,因为 addPersonObject 需要一个参数。

于 2012-11-08T23:37:45.350 回答
0

我最终使用定义我的模型的关系的代码来查找它是否是 toMany 关系。该代码特定于我的数据结构,但它看起来像:

   # is this a toMany relationship on this class?
   def toMany?(relationship)

      result = false
      relationship = relationship.to_s # in case it was a symbol
      entities = Kernel.const_get( self.class.name ).entityDescription
      entities.each do |e|
        if e.class == NSRelationshipDescription and e.name == relationship and e.maxCount == -1
          result = true 
        end
      end
      result
    end
于 2012-11-16T19:10:37.133 回答