2015-06-27 19 views
0

我剛剛發現了大約Parse's Local Data Store,它看起來像處理在線/離線同步的SQL數據庫。使用分析來替換核心數據

我正在爲想要類似於聯繫人應用程序的客戶編寫應用程序。聯繫人可以脫機添加/編輯,也可以添加到其他設備上,並且都需要正確同步,而不是創建重複的實體。

正在使用解析本地數據存儲一個可行的選項?

我這樣做在App委託並完成與選擇的方法啓動:

query.findObjectsInBackgroundWithBlock { 
    (objects: [AnyObject]?, error: NSError?) -> Void in 
    if error == nil { 
     if let objects = objects as? [PFObject] { 
      PFObject.pinAllInBackground(objects, block: nil) 
     } 
    } else { 
     println("Error: \(error!) \(error!.userInfo!)") 
    } 
} 

然後在我的初始視圖控制器我這樣做:

query.findObjectsInBackgroundWithBlock { 
    (objects: [AnyObject]?, error: NSError?) -> Void in 
    if error == nil { 
     if let objects = objects as? [PFObject] { 
      self.athleteArray = objects 
      self.tableView.reloadData() 
     } 
    } else { 
     println("Error: \(error!) \(error!.userInfo!)") 
    } 
} 

不過,我想是因爲應用程序代理查詢在後臺運行,當視圖控制器運行時,數據存儲沒有收到對象,因爲tableview顯示爲空。

當我稍後再次啓動應用程序時,由於數據存儲已填充,所以對象已存在。

如何使用Parse的本地數據存儲管理同步對象(實時,無需第二次應用程序啓動)?我做錯了什麼嗎?

回答

3

解析和核心數據解決了不同的問題。 Parse是一個雲數據存儲,具有一系列有用的輔助服務。核心數據是一個Objective-C對象圖持久化系統。首先要問自己的是:

1)每個Parse查詢潛在地花費開發者資金和用戶帶寬和延遲。這些成本是否值得付出?

2)根據我的經驗,Parse的本地數據存儲的可靠性不如我想。它可能足夠滿足您的需求。只有你能說出來嗎?我選擇了在我最近的應用程序中同時使用Core Data和Parse。

3)同步數據很困難。通過成爲「雲中的真相」來解析,可能會使這更容易。但不通過本地數據存儲。每個同步應用程序都需要掃描一個非常小的本地數據庫並將其與雲進行比較。有辦法緩解這種情況,但需要與「真相」進行比較,併合並衝突處理。

4)分析的本地數據存儲不是共享資源,因爲您似乎相信。本地數據存儲位於每個應用的沙箱中,並且是孤立的。 Parse正在做一些事情來允許共享Watch擴展,並且可能會與watchOS v2打開。但是直到Parse運送它之前,我都不會相信它。

最後一點非常重要。解析的核心是一家網絡技術公司。他們相信快速的技術轉向。如果他們現在還沒有開始工作,他們很快就會開始工作。作爲一名開發人員,這意味着您不應該在他們重複發佈技術幾次之前繼續使用他們的新技術。

我發現通過Parse成功的途徑在於在開始項目時使用它們做得很好。目前還不清楚他們會在什麼地方隨着您達到目標所需的速度發展,而且他們沒有什麼動力來改變新應用的價格。

+0

是的,我想我會堅持核心數據+解析,主要是爲了網絡最小化。感謝您的洞察! –

+0

我是否可以使用解析來在本地存儲數據作爲核心數據的完整替代?我的意思是說,沒有免費的解析帳戶的互聯網存儲。 –

+0

是的,你可以使用Parse的本地存儲。我的結果好壞參半。因此,我付出雙DB解決方案的代價。 – adonoho