0

コア データを使用する iOS アプリケーションがあります。別のオブジェクトとの toMany 関係を持つマネージド オブジェクトを作成しました。アプリケーションは RubyMotion で書かれています。

"group" NSManagedObject オブジェクトの "toMany" 関係を person オブジェクトに設定するときは、次のように呼び出します。

group.addPersonObject( person )

しかし、呼び出す前に「addPersonObject」が存在することを確認したいと思います。私は試した

if group.respondsToSelector( "addPersonObject" ) 

しかし、それはうまくいかないようです。コアデータによって動的に作成されるためだと思います。

呼び出す前に存在するかどうかを確認する良い方法は何ですか?

スタックオーバーフローに関する他の質問から、私はクラスのインスタンスを扱っているので、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 に答える