我刚刚发现了Parse's Local Data Store,它看起来像是一个处理在线/离线同步的SQL数据库。
我正在为想要与联系人应用程序类似的客户编写应用程序。可以离线添加/编辑联系人,也可以在其他设备上添加联系人,这些联系人都需要正确同步,而不是创建重复的实体。
使用Parse Local Data Store是否可行?
我在App Delegate中使用选项方法完成启动:
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!)")
}
}
但是,我假设因为App Delegate查询在后台运行,所以当视图控制器运行时数据存储没有收到对象,因为tableview显示为空。
当我稍后再次启动应用程序时,对象就在那里,因为已经填充了数据存储。
如何使用Parse的本地数据存储管理同步对象(实时,没有第二个应用程序启动)?我做错了吗?
答案 0 :(得分:3)
解析和核心数据解决了不同的问题。 Parse是一个云数据存储,包含许多有用的辅助服务。核心数据是Objective-C对象图持久性系统。首先要问自己的是:
1)每个Parse查询都可能花费开发人员的资金和用户带宽和延迟。这些成本是否值得付出代价?
2)根据我的经验,Parse的本地数据存储不如我想要的那么可靠。它可能足以满足您的需求。只有你可以告诉?我选择在我最近的应用程序中使用Core Data和Parse。
3)同步数据很难。解析,作为云中的真相,"可能会让这更容易。但不是通过本地数据存储。每个同步应用程序都需要扫描一小部分本地数据库,并将其与云进行比较。有一些方法可以缓解这种情况,但要与“真相”进行比较。将需要处理合并冲突。
4)Parse的本地数据存储不是共享资源,正如您所认为的那样。本地数据存储区位于每个应用程序的沙箱中并且是隔离的。 Parse正在做一些事情以允许Watch扩展的共享,并且可能会与watchOS v2一起打开。但是在Parse发货之前我不会指望它。
最后一点非常重要。 Parse的核心是一家网络技术公司。他们相信快速的技术转向。如果他们现在不能正常工作,他们很快就会开始工作。作为开发人员,这意味着在他们重复发布技术几次之前,你不应该跳过他们的新技术。
我发现Parse成功的道路在于,当你开始你的项目时,使用它们可以做得很好。目前还不清楚他们是否会以达到目标所需的速度发展,他们没有动力为新应用降低费率。