我的应用是一个包含电话号码和位置等基本信息的目录。会有很多条目,我必须每周更新一次数据库,我不想依赖我的用户使用 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-推荐答案 strong>
来自 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/
|