我的应用是一个包含电话号码和位置等基本内容的目录。这将是许多条目,我将不得不每周更新数据库,我不想依赖我的用户使用App商店更新他们的应用程序,所以我希望数据每当他们连接到互联网时都会更新,但我希望所有数据都存储在本地,这样他们就可以使用它,即使他们没有互联网访问权限。对于我的第一个应用程序,它证明是非常棘手的:)
我想我必须使用Parse所以我可以随时更新数据库,以及Realm(https://realm.io/)或Core Data(希望不是核心数据:()。阅读有关Parse的本地数据存储的信息,如果能够满足我的需求,我肯定会使用它。我喜欢Realm的简单性,如果我有这样的话使其与Parse一起使用,这将是我想要采取的路线。
有人可以告诉我一个关于他们如何做这件事的例子吗?如果PFObject或RLMObject被称为person并且有两个字符串(电话号码和名称,您如何从Parse.com到设备(本地存储)?
这是额外的,我甚至不知道它是否可能*
当应用程序从App Store下载时,它是否可以从Parse下载数据?在第二个用户打开应用程序时,即使他们不再具有互联网访问权限,数据也会在本地存储并可供他们使用。
(我只知道Swift,但如果有人愿意向我展示一些代码片段,可能能够理解obj-c)
任何帮助都将非常感谢:)
答案 0 :(得分:1)
来自Realm的乔。
首先从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中的主键)。以下是Realm中的how you set a primary key。
我将如何将它们导入Realm的示例将是这样的(其中Venue是对象在Realm中存储的方式的类):
let realm = Realm()
realm.write {
for object in objects {
realm.create(Venue.self, value: object, update: true)
}
}
您可以阅读有关导入here
的更多信息最后,你这样做的逻辑取决于你。你可以在每次打开应用程序时执行此操作。将本地数据库与服务器上的数据库同步的一件事是,检查另一个表可能称为LastUpdated是件好事。如果您需要更新本地数据库,此表将通知您。总的来说,这是一个非常手动的过程,但这取决于具体情况以及您希望如何构建应用程序。