Swift - 如何在加载 ViewController 之前正确实现 CoreData 的更新/设置
Posted
技术标签:
【中文标题】Swift - 如何在加载 ViewController 之前正确实现 CoreData 的更新/设置【英文标题】:Swift - How to Properly Implement Updating/Setting Up of CoreData for use prior to ViewController loading 【发布时间】:2018-10-05 04:40:02 【问题描述】:我的情况如下:
我将使用 CoreData 来存储/获取要在 tableView 中显示的实体实例。在应用程序启动时,我让应用程序检查当前库的版本,然后 - 如有必要 - 下载更新版本(通过 JSON)。
问题(我相信)是视图控制器在对 CoreData 的“版本检查”和“库更新”完成之前尝试从数据源中提取 tableView 信息时加载并崩溃。由于更新尚未完成,库没有保存实体的实例,并为要显示的行返回 nil 值 - 导致崩溃。
我的问题是:实现更新功能并确保在加载初始视图控制器并尝试检索必要信息以显示 tableView 之前完成所有“版本”检查和“库”更新的正确方法是什么.
我认为它与 App Delegate 中的“willFinishLaunchingWithOptions”有关,但我不知道如何设置它。您可能已经猜到了,我是编码新手。因此,将不胜感激详细的答复。
【问题讨论】:
【参考方案1】:要执行一些冗长的任务(例如实现“版本”检查和“库”更新等更新功能),请遵循以下方法:-
-
创建一个类似于启动视图控制器的视图控制器,比如
CustomSplashViewController
在 CustomSplashViewController 中,执行版本检查和库更新任务
完成更新检查后,导航到您的主视图控制器。
如果强制更新在 CustomSplashViewController 上失败,则显示带有重试按钮的弹出窗口。
【讨论】:
以上是关于Swift - 如何在加载 ViewController 之前正确实现 CoreData 的更新/设置的主要内容,如果未能解决你的问题,请参考以下文章
swift - 通过 prepareforsegue 在 2 个视图控制器之间添加值
如何从情节提要中获取 UIViewControl 对象的笔尖名称
Swift:为 CustomTab 重用一个 ViewController