OGeek|极客世界-中国程序员成长平台

标题: ios - 如何使用 Parse 创建一个可以离线工作的数据库? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 08:53
标题: ios - 如何使用 Parse 创建一个可以离线工作的数据库?

我的应用是一个包含电话号码和位置等基本信息的目录。会有很多条目,我必须每周更新一次数据库,我不想依赖我的用户使用 App Store 更新他们的应用程序,所以我希望在他们连接到时更新数据互联网,但我希望所有数据都存储在本地,这样即使他们无法访问互联网,他们也可以使用它。对于我的第一个应用程序,它被证明是相当棘手的

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

有人可以给我举个例子来说明他们如何去做吗?如果 PFObject 或 RLMObject 被称为 person 并且有两个字符串(电话号码和姓名,您将如何将其从 Parse.com 获取到设备(本地存储)?

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

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

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

任何帮助将不胜感激



Best Answer-推荐答案


来自 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().create(_:value:update (如下面的代码所示)。你需要确保你有一个主键来使用它(我会使用 parse 的 objectId 作为 Realm 中的主键)。这里是 how you set a primary key在 Realm 中。

我如何将它们导入 Realm 的一个示例是这样的(其中 Venue 是对象在 Realm 中存储方式的类):

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

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

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

关于ios - 如何使用 Parse 创建一个可以离线工作的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31193853/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4