2017-02-23 160 views
0

我必須在這裏寫什麼?無法讓Graph + iCloud工作

db = Graph(cloud: "iCloud.com.devname.appname", completion: { (done, error) in 
      if let errore = error { 
       debugPrint("Error iCloud: \(errore.localizedDescription)") 
       return 
      } 
     }) 

db = Graph(cloud: "fantasyString", completion: { (done, error) in 
      if let errore = error { 
       debugPrint("Errore iCloud: \(errore.localizedDescription)") 
       return 
      } 
     }) 

我什麼都試過,但我無法做出iCloud的工作

感謝你的幫助,丹尼爾

編輯: 的方式,我讀數據表格db:

var customers : [Entity] { 
     let search = Search<Entity>(graph: db).for(types: "Customers") 
     return search.sync(completion: nil).sorted { ($0["name"] as! String) < ($1["name"] as! String)} 
    } 

我保存記錄的方式:

func newCustomer(name:String, phone:String, mail:String, closure: @escaping()->()) { 

     let cliente = Entity(type: "Customers") 
     cliente["name"] = name 
     cliente["phone"] = phone 
     cliente["mail"] = mail 
     db.sync { (done, error) in 
      if let errore = error { 
       debugPrint("Errore addCustomer: \(errore.localizedDescription)") 
       return 
      } 
      if done { closure() } 
     } 
    } 

EDIT 2:GraphDelegate實現:

extension DataManager: GraphDelegate { 

    func graphWillPrepareCloudStorage(graph: Graph, transition: GraphCloudStorageTransition) { 
     debugPrint("graphWillPrepareCloudStorage") 
     if transition == .initialImportCompleted { 
      debugPrint("iCloud initialImportCompleted ok") 
      self.clientiCont?.tableView.reloadData() 
     } 
    } 

    func graphDidPrepareCloudStorage(graph: Graph) { 
     debugPrint("graphDidPrepareCloudStorage") 
     self.clientiCont?.tableView.reloadData() 
    } 

    func graphWillUpdateFromCloudStorage(graph: Graph) { 
     debugPrint("graphWillUpdateFromCloudStorage") 
     self.clientiCont?.tableView.reloadData() 
    } 

    func graphDidUpdateFromCloudStorage(graph: Graph) { 
     debugPrint("graphDidUpdateFromCloudStorage") 
     // refresh clienti 
     self.clientiCont?.tableView.reloadData() 

     // refresh lista ordini 
     self.gestCliCont?.tableOrder.reloadData() 

     // refresh oridine 
     self.gestOrdCont?.showOrder() 
     self.gestOrdCont?.tableProdotti.reloadData() 
    } 


} 

編輯:iCloud的配置 enter image description here

+0

嘿,你有沒有設置你的iCloud容器與蘋果,並啓用它在你的應用程序? – CosmicMind

+0

當然......我必須在雲字符串中寫什麼?捆綁標識符或幻想字符串? – Enlil

+0

我把標識符的最後部分。例如,如果標識符是「com.cosmicmind.Focus」,我把'Focus'。另外,請確保您已在iCloud的功能面板中選擇了「iCloud Documents」。 – CosmicMind

回答

0

感謝我的一個學生,我發現bug:

  • 如果你打一個rec ORD這一切辦法正常工作: let record = Entity(type: "Names", graph: self.db)
  • ,但如果你使用這個初始化它並不:let record = Entity(type: "Names")

所以解決方法是:做好記錄這樣 let record = Entity(type: "Names", graph: self.db)