我有UIViewController
名为BaseController
,此控制器包含屏幕的所有功能,从服务下载数据等等...
我目前正在一个名为UIViewController
的{{1}}内部继承HomeVC
,初始化此BaseController
我正在调用从服务下载数据的方法,下载数据后,我将数据(让我们调用对象UIViewController
)插入DbHomeData
并将其显示在CoreData
UITableView
上。
当我点击其中一个HomeVC
单元格时出现问题,它会推送一个新的UITableView
,该UIViewController
也会继承BaseController
。
这个新的UIViewController
正在下载新数据,并在CoreData
正在进行时再次插入HomeVC
,但现在我将旧数据和新下载的数据放在一起,但是如果我将删除旧数据,然后当我弹出此UIViewController
时,旧数据将消失,UITableView
将不会显示任何内容。
如何解决此问题或修复此问题?有没有办法初始化NSManagedObject
而不将其插入CoreData
?有更好的解决方案吗?
提前致谢!
答案 0 :(得分:1)
有没有办法初始化NSManagedObject而不将其插入CoreData?
是的,你可以这样做:
NSManagedObject *myObj = [[NSManagedObject alloc] initWithEntity:myEntity insertIntoManagedObjectContext:nil];
这会实例化一个新的NSManagedObject
,但不会将其与上下文相关联。
有更好的解决方案吗?
很难说。你并没有给我们太多的帮助,但我认为你的主要问题在于你为自己设定的继承结构。考虑将下载代码放在单独的模型类中(例如MyDownloadManager
),而不是在控制器类中。牢记MVC设计模式。