0

NSManagedObjectサブクラスを並べ替える基本的なテストを試みています。基本的なサブクラス「TestClass」を2つの属性で設定しました:stringFieldnumberField。標準のObj-C2.0アクセサープロトコルを使用します。

@interface TestClass : NSManagedObject
@property (retain) NSString *stringField;
@property (retain) NSNumber *numberField;
@end

@implementation TestClass
@dynamic stringField;
@dynamic numberField;
@end

このエンティティのインスタンスをフェッチしようとすると、どちらの属性にも基づいてフェッチできます。ただし、ソート記述子を使用すると、numberFieldはKVCに準拠していないと言われます。

モデル内で、numberFieldをInt64に設定しましたが、混乱しています。ラッパー(NSNumber)がKVCの問題を処理すると思いました。これを機能させるには何をする必要がありますか?

4

1 に答える 1

2

最初の「コンピューターの電源は入っていますか?」タイプの質問:

  1. モデルは、エンティティの管理対象オブジェクト クラスが TestClass であることを指定していますか?
  2. numberFieldソート記述子でキーを指定するときにスペルが正しいですか?
  3. numberFieldモデルに一時的な属性はありますか?

これらは、ソート記述子を使用してフェッチするときにこのようなエラーを引き起こす可能性があると私が考えることができる一般的な問題です。特に最初のものです。

また、これは KVC には影響しませんが、プロトコルに準拠し、変更可能なサブクラスを持つ可能性がある「値」クラスであるため、属性のプロパティ宣言は(copy)むしろそうである必要があります。変更可能な文字列を渡して Core Data の下で変更したくはありません。(ええ、Cocoa には NSMutableNumber または NSMutableDate はありませんが、それによって MyMutableNumber または MyMutableDate サブクラスの作成が妨げられることはありません...)(retain)NSCopying

于 2009-03-21T22:13:14.540 に答える