所以我一直在更新我的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在迁移时更新了函数头。
更新:
所以显然以下是零值
但我不确定自Swift 3迁移以来导致这种情况的原因
答案 0 :(得分:1)
所以我发现错误是因为委托中的didFinishLaunchingWithOptions
函数。该功能未正确迁移。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: Any]?) -> Bool {
我创建了一个新项目并使用了以下代码
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
它有效。这是因为未调用以下内容因此未设置核心数据堆栈
self.setupCoreData()