UIViewController继承与CoreData

时间:2015-03-15 10:17:00

标签: ios objective-c uitableview core-data nsmanagedobject

我有UIViewController名为BaseController,此控制器包含屏幕的所有功能,从服务下载数据等等...

我目前正在一个名为UIViewController的{​​{1}}内部继承HomeVC,初始化此BaseController我正在调用从服务下载数据的方法,下载数据后,我将数据(让我们调用对象UIViewController)插入DbHomeData并将其显示在CoreData UITableView上。

当我点击其中一个HomeVC单元格时出现问题,它会推送一个新的UITableView,该UIViewController也会继承BaseController

这个新的UIViewController正在下载新数据,并在CoreData正在进行时再次插入HomeVC,但现在我将旧数据和新下载的数据放在一起,但是如果我将删除旧数据,然后当我弹出此UIViewController时,旧数据将消失,UITableView将不会显示任何内容。

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

提前致谢!

diagram

1 个答案:

答案 0 :(得分:1)

  

有没有办法初始化NSManagedObject而不将其插入CoreData?

是的,你可以这样做:

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

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

  

有更好的解决方案吗?

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