如何使用 Parse 创建可以离线工作的数据库?

How to create a database using Parse that will work offline?

我的应用程序是一个包含 phone 数字和位置等基本内容的目录。会有很多条目,我将不得不每周更新一次数据库,我不想依赖我的用户使用 App Store 更新他们的应用程序,所以我希望在他们连接到时更新数据互联网,但我希望所有数据都存储在本地,这样即使他们无法访问互联网也可以使用它。对于我的第一个应用程序,事实证明它非常棘手 :)

我想我必须使用 Parse,这样我就可以在需要时更新数据库,以及 Realm (https://realm.io/) 或 Core Data(希望不是 Core Data :( ) 之类的东西。我阅读有关 Parse 的 Local DataStore 的信息,如果有办法让它满足我的需求,我肯定会使用它。不过我喜欢 Realm 的简单性,如果我有办法让它与 Parse 一起工作,那就是路线我想带。

谁能给我举个例子,说明他们是如何着手做这件事的?如果 PFObject 或 RLMObject 被称为 person 并且有两个字符串(phone 数字和名称,您如何将其从 Parse.com 获取到设备(本地存储)?

这是额外的,我什至不知道是否可能*

应用程序从App Store 下载时,是否可以从Parse 下载数据?就像在用户打开应用程序的那一刻,即使他们不再有互联网访问权限,数据也会存储在本地并可供他们使用。

(我只知道 Swift 但如果有人愿意给我看一些代码片段,我可能能够理解 obj-c)

任何帮助都将不胜感激:)

来自 Realm 的 Joe。

首先要从 Parse 中检索对象,您需要执行以下操作:

var query = PFQuery(className:"GameScore")
query.whereKey("playerName", equalTo:"Sean Plott")
query.findObjectsInBackgroundWithBlock {
  (objects: [AnyObject]?, error: NSError?) -> Void in

  if error == nil {
    // The find succeeded.
    println("Successfully retrieved \(objects!.count) scores.")
    // Do something with the found objects
    if let objects = objects as? [PFObject] {
      for object in objects {
        println(object.objectId)
      }
    }
  } else {
    // Log details of the failure
    println("Error: \(error!) \(error!.userInfo!)")
  }
}

您可以阅读更多相关内容here

一旦你检索到你的对象,我会像你在这里看到的那样循环遍历它们

  for object in objects {
    println(object.objectId)
  }

然后我会在 Realm 中使用 Realm 的 Realm().create(_:value:update:)(shown in code below). You need to make sure you have a primary key to use this though (I would use parse's objectId as the primary key in Realm). Here is how you set a primary key

我如何将它们导入 Realm 的示例如下(Venue 是对象在 Realm 中存储方式的class):

  let realm = Realm()
  realm.write {
    for object in objects {
      realm.create(Venue.self, value: object, update: true)
    }
  }

您可以阅读有关导入的更多信息here

最后,何时执行此操作取决于您的逻辑。每次此人打开应用程序时,您都可以这样做。将本地数据库与服务器上的数据库同步的一件事是,最好检查另一个 Table 可能称为 LastUpdated。 table 会通知您是否需要更新本地数据库。总体而言,这是一个非常手动的过程,但这取决于具体情况以及您希望如何构建应用程序。