0

我正在将 CoreData 添加到现有的 iOS 项目中,并且在从抽象类继承的子类中显示数据时遇到问题。

我有一个抽象类 ( Object),它为我想要的子实体/具体类定义了一组共享字段。例如,抽象类包含title, startDate。它在数据模型中设置为具有Object. Object被设置为数据模型中的抽象类。

我的子实体 ( 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];

这将返回YES以存储到 CoreData。

但是,当我尝试记录费用的金额(或其任何其他设置属性)时,它们会根据属性类型显示为 nil、0 等。

我的项目中有其他基本实体/模型以这种方式保存得很好,所以这与我的 CoreData 设置或处理对象上下文的 Store 类无关。抽象类出现了具体问题。

如何设置我的抽象类的子实体以正确保存该子类的属性?我正在转动我的轮子,似乎无法在 Apple 文档或在线任何地方找到一个很好的例子来说明如何做到这一点。任何事情都值得赞赏。:)

4

1 回答 1

0

经过大量调试,并直接联系@PhillipMills,我们能够解决问题,我希望其他人不必花时间拉扯头发。:)

类上的拥有- (void)setAmount- (void)setPayee方法Object导致所需的设置器被覆盖。我不是故意实现这些,但Object在我将 CoreData 引入我的项目之前,它们就存在于我的课堂上。

删除 Object 类上的那些 getter 和 setter 使事情按预期工作。非常感谢菲利普的帮助!

于 2012-10-20T18:33:55.853 回答