实现帮助......子类NSManagedObject?

时间:2010-06-18 02:10:30

标签: iphone core-data nsobject

我正在开发一个应用程序,我在其中列出了一些我下载的产品。下载的产品显示在表格中,每个产品都会显示包含更多信息的详细信息视图。

这些相同的产品可以保存为收藏夹,为此我使用的是Core Data。

我希望能够重复使用一堆视图来显示产品,这意味着商店对象和下载的对象必须是同一种类。

现在,我将如何最好地实现对象?我可以创建一个这样的课程:

FavoriteProduct:NSManageObject //实施

然后是子类

产品:FavoriteProduct //实施

CD课程并没有给我一切。合并这两个对象类的最佳方法是什么,因此在为每个对象实现不同视图方面,我的工作量很少?基本上,我只是希望能够在Product对象上调用相同的方法等,就像在FavoriteProduct对象上调用相同的方法一样,并重新使用这两种类型的视图。两者之间只有一点区别(一个当然存储为收藏夹,并且有一些额外的值,例如注释,标签,而产品一个没有)。

提前致谢

1 个答案:

答案 0 :(得分:0)

我刚才有同样的问题。快速回答:你不能在没有上下文的情况下实例化一个NSManagedObject子类,所以使用NSManagedObject作为超类来处理那些不会被保存的东西(因为它只是从网上查看),这可能不是一个好主意。

所以对你的情况来说:

  • FavoriteProduct必须是NSManagedObject的子类
  • 因此,Product(FavoriteProduct的超类)也必须是NSManagedObject上下文的子类
  • 但是必须使用上下文创建

作为一种解决方法,您可以为Product类型的对象创建一个“假”/临时上下文,但不能使用FavoriteProduct,并按照您描述的方式执行层次结构(这对我来说似乎有些苛刻)

另一种可能的解决方案是使用此层次结构:

  • 产品:NSObject(或其他)
  • FavoriteProduct:Product
  • StoredProduct:NSManagedObject

在这种情况下,通常会在Product / FavoriteProduct上实现所有方法,并且具有从FavoriteProduct到StoredProduct的绑定(即,您可以在FavoriteProduct上拥有属性“storedProduct”,用于在某些时候更新CoreData FavoriteProduct上的属性已更改)

我有兴趣看看其他人在这种情况下做了什么