0

プロジェクトで Simperium と mogenerator を使用しています。SPManagedObject エンティティをモデルに追加し、それを他のエンティティの親クラスとして設定しました。エンティティごとに、mogenerator は、いくつかの便利なアクセサーを持つ _<entityname>.h および _<entityname>.m ファイルを自動的に作成します。mogenerator ビルド スクリプトを変更して、これらの各サブクラスが NSManagedObject ではなく SPManagedObject になるようにしました。エンティティ クラスは、対応する _<entityname>.h ファイルをインポートするだけです。

私の問題は、便利なアクセサーを使用するとランタイム エラーが発生することです。たとえば、myInteger という Integer32 型の属性を持つエンティティの場合、クラス ファイル プロパティは NSNumber です。Mogenerator は、myIntegerValue という名前のアクセサーを作成します。私が得ているエラーは、myIntegerValue が SPManagedObject の認識されないセレクターであることです。明らかにこれを回避できますが、より大きな問題を示しているようです。何か案は?ありがとう!

4

1 に答える 1

0

この種の問題は、ほとんどの場合、Core Data モデル エディターでクラス名を構成できなかったことが原因です。クラスFooとエンティティを持っているかもしれFooませんが、それらは自動的に一緒になるわけではありません (同じ名前である必要はありません)。これを行わないNSManagedObjectと、サブクラスのインスタンスではなく のインスタンスが取得されます。そしてもちろん、NSManagedObjectそれらのメソッドはありません。

モデル エディターでエンティティを選択し、右側のモデル インスペクターを確認します。クラス名が設定されていることを確認してください。

ここに画像の説明を入力

于 2013-08-05T21:27:12.027 に答える