|
|
1
14
你不能把迁移放在
请看我的答案: How to switch from Core Data automatic lightweight migration to manual? 2010年5月19日更新澄清我的立场。做任何事都有可能。但是,在后台线程上执行迁移是一个非常复杂的过程 坏主意 . 很难保证堆栈 从未 在迁移过程中接触到其他线程特有的复杂问题。 它是 可能的 但这涉及到一个完全没有必要的高度风险。主线程可以而且应该用于迁移主核心数据堆栈。很容易建立一个模式对话框,让用户知道正在进行迁移,然后在主线程上执行迁移。
更新日期:2015年12月15日
现在迁移的答案是在后台队列(通过
这也意味着您需要确保您的UI能够处理持久层在未知时间段内为空/不可用的情况。如何做到这一点取决于您的应用程序。 例如,您可以有一个临时UI,在持久层进行迁移时显示跳舞的猫。用户体验由您决定。 但是,你知道 不是 希望让用户在迁移过程中创建数据。这将使以后的合并变得困难(如果有的话)。 |
|
|
2
7
对不起,马库斯,我不得不恭敬地表示不同意。你呢 我的migration运行在后台线程上。在速度较慢的设备上可能需要10秒以上,因此我在后台线程上启动它,并使用特定的模态视图控制器来显示进度。 方法是将正常的加载顺序分为两个阶段。 第1阶段) 第2阶段) 执行启动时通常发生的所有需要托管对象的操作。这一阶段是第1阶段(不需要迁移)的直接延续。
为了成功地执行长时间迁移,我使用了一个模态视图控制器来向用户显示迁移进度的反馈。然后我在后台线程中开始迁移,而模态视图控制器使用KVO来更新它的进度条。 在迁移结束时,它关闭整个核心数据“堆栈”,对主线程的回调将取消模式并继续到第2阶段)。 open question 一种让自动轻量级迁移像手动迁移一样显示其进展的方法。 |
|
|
3
2
下面是一个类似于ohhorob描述的方法的概要。不同的是,我只是显示一个动画“升级…”HUD,而不是一个信息更丰富的进度条。
|
|
|
4
0
您可以将核心数据更新放入
this tutorial page
对所涉及的事情有个大概的了解。使用
KVO
因为手术的原因
|
|
|
5
0
我找到了一个很简单的方法。把你所有的电话都写进application:didFinishLaunching with 与主线程异步的调度。这将立即返回并让您在主线程上执行升级。但是,您可能应该设置窗口,使其在迁移时不会显示空白屏幕。
|
|
|
mikko · SwiftUI如何在不同堆栈中实现同一视图的平滑动画 1 年前 |
|
|
routern · 如何组合contextMenu和圆角矩形? 1 年前 |
|
|
DevHome98 · 3D触摸不适用于设备swift 2 年前 |
|
|
dunoiww · 从全屏返回时如何触发onAppear 3 年前 |
|
|
Community wiki · iPhone上ivar的继承问题 3 年前 |
|
|
Community wiki · 查找iOS日历 3 年前 |
|
|
Community wiki · 有效的IPhone编程技术[关闭] 3 年前 |