2016-09-06 42 views
0

所以我一直在更新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的更新功能遷移時的標題。

UPDATE:

因此很明顯,下面有一個零值

enter image description here

但我不能確定是什麼原因造成這一點,因爲雨燕3遷移

+1

把所有勞累斷點放在xCode中,並告訴我們請你在哪裏是你的錯誤。 –

+0

@PavelGatilov我已經更新了這個問題,並且我正要仔細檢查在遷移 –

+0

時還發生了什麼變化,但是在哪裏崩潰? –

回答

1

所以我發現,錯誤是因爲委託中的didFinishLaunchingWithOptions函數。該功能沒有正確遷移。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: Any]?) -> Bool { 

我創建了一個新的項目,用下面的代替

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 

和它的工作。這是因爲沒有被調用,所以我的核心數據堆棧沒有設置

self.setupCoreData() 
+0

爲什麼不按Apple模板中的建議使用(自動)惰性初始化的核心數據堆棧? – vadian

相關問題