UIViewController 继承与 CoreData

UIViewController inheritance with CoreData

我有一个名为 BaseControllerUIViewController,这个控制器拥有屏幕的所有功能,从服务下载数据等等...

我目前在一个名为 HomeVCUIViewController 中,它继承自 BaseController,当初始化此 UIViewController 时,我正在调用一个方法来从中下载数据服务,下载数据后,我将数据(让调用对象 DbHomeData)插入 CoreData 并在 HomeVC 上的 UITableView 中显示它。

当我单击 UITableView 单元格之一时,我的问题出现了,它会推送一个新的 UIViewController,它也继承自 BaseController

这个新的 UIViewController 正在下载新数据并像 HomeVC 一样将其再次插入 CoreData,但现在我同时拥有旧数据和新下载的数据,但是如果我要删除旧数据,那么当我弹出这个 UIViewController 时,旧数据将消失并且 UITableView 将不显示任何内容。

如何解决或修复此问题?有没有办法初始化NSManagedObject而不插入CoreData?有更好的解决方案吗?

提前致谢!

Is there a way to initialize NSManagedObject without inserting it into CoreData?

是的,你可以这样做:

NSManagedObject *myObj = [[NSManagedObject alloc] initWithEntity:myEntity insertIntoManagedObjectContext:nil];

这会实例化一个新的 NSManagedObject 但不会将其与上下文相关联。

Is there a better solution?

很难说。您没有给我们太多的帮助,但我认为您的主要问题在于您为自己设置的继承结构。考虑将您的下载代码放在单独的模型 class(例如 MyDownloadManager)中,而不是放在控制器 class 中。牢记 MVC 设计模式。