0

CoreData を既存の iOS プロジェクトに追加する作業を行っていますが、抽象クラスから継承する子クラスに表示されるデータに問題があります。

Object目的の子エンティティ/具象クラスの共有フィールド セットを定義する抽象クラス ( ) があります。抽象クラスにはtitlestartDateたとえば、が含まれます。の親エンティティを持つようにデータ モデルでセットアップされますObjectObjectデータモデルで抽象クラスとして設定されます。

私の子エンティティ ( Expense) にはプロパティがありますamount(特に)。

通常、次のように経費の作成を開始します。

Expense *expense = [NSEntityDescription insertNewObjectForEntityForName:NSStringFromClass([Expense class]) inManagedObjectContext:[Store sharedStore].managedObjectContext];

次に、目的のプロパティを設定します。

expense.amount = [NSDecimalNumber decimalNumberWithString:amountString];
expense.title = title;
expense.startDate = [NSDate dateFromString:dateString withFormat:@"yyyy-MM-dd"];
(other properties on expense set here)
.
.

次に、コンテキストで save を呼び出します。

[[Store sharedStore].managedObjectContext save:&error];

これはYESCoreData に格納されているため返されます。

ただし、経費の金額 (またはその他の設定されたプロパティ) を記録しようとすると、プロパティの種類に応じて、nil、0 などになります。

私のプロジェクトには他の基本エンティティ/モデルがあり、この方法で問題なく保存されているため、オブジェクト コンテキストを処理する CoreData セットアップまたは Store クラスとは関係ありません。抽象クラスで特定の問題が発生しました。

子クラスのプロパティが正しく保存されるように、抽象クラスの子エンティティを設定するにはどうすればよいですか? 私は車輪を回転させていますが、Apple ドキュメントやオンラインのどこにも、その方法の良い例が見つからないようです。何でも大歓迎です。:)

4

1 に答える 1

0

多くのデバッグを行い、@PhillipMills に直接連絡した後、問題を突き止めることができました。:)

クラスに- (void)setAmount- (void)setPayeeメソッドがあるObjectと、必要なセッターがオーバーライドされていました。これらは意図的に実装したわけではありませんが、ObjectCoreData をプロジェクトに導入する前にクラスに存在していました。

Object クラスでこれらのゲッターとセッターを削除すると、期待どおりに動作するようになりました。Phillip の助けに感謝します。

于 2012-10-20T18:33:55.853 に答える