そのため、Swift 3.0 用にコードを更新しており、アプリが開かれると、iCloud と同期してフェッチ要求を実行します。
ただし、次のオプションのエラーが発生します
let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.syncWithCompletion { (completed) -> Void in
}
appDelegate で次の関数を実行します
func syncWithCompletion(_ completion:@escaping (_ completed:Bool) -> Void) {
if !ensemble.isLeeched {
ensemble.leechPersistentStore { error in
if error != nil {
print("cannot leech \(error!.localizedDescription)")
completion(false)
}
else {
print("leached!!")
completion(true)
}
}
}
else {
ensemble.merge{ error in
if error != nil {
print("cannot merge \(error!.localizedDescription)")
completion(false)
}
else {
print("merged!!")
completion(true)
//NSNotificationCenter.defaultCenter().postNotificationName("Updated-DB", object: nil)
}
}
}
}
オプションのエラーが何のためのものかわかりません。Xcode は移行時に関数ヘッダーを更新しました。
アップデート:
したがって、明らかに以下の値は nil です
しかし、Swift 3 への移行以降、何が原因なのかはわかりません