0

我的应用程序将contact对象存储在本地数据存储中。它只是将所有通讯簿联系人复制到 Parse Local Datastore 中。就我而言,我创建了大约 200 个新联系人,并使用以下代码行存储它们:

PFObject.pinAllInBackground(addressBookContacts, block: { (contact) -> () in NSLog("contacts pinned")})

每次启动我的应用程序时,我都会查找存储的对象以通过以下查询将它们呈现给用户:

let localQuery = PFQuery(className: "Contact")
localQuery.fromLocalDatastore()
localQuery.findObjectsInBackgroundWithBlock({ (localresults: [AnyObject]?, error: NSError?) -> Void in
    // show contacts to the user
})

如果没有找到联系人,我会浏览通讯簿并重新创建它们。

问题是查询在某些情况下不返回任何内容。我启动应用程序,等到控制台中出现“固定联系人”(只是为了确保调用 pin 回调)并一次又一次地重新运行应用程序 - 最终查询返回重复的联系人(其中大约 800 个),所以我我确定在以前的尝试中固定成功,但在大多数情况下查询看不到它们。为什么会这样?

更新

我已经将我的 fetch 方法包装在一个dispatch_after块中,以将查询延迟几秒钟并修复了错误!看起来我的查询正在尝试获取尚未准备好的本地数据存储?查询回调中没有错误消息,什么都没有。

4

0 回答 0