Ios 从Parse中检索应用程序上已存在的联系人时出现问题
我希望做一些类似于最流行的应用程序(如Snapchat)的事情,在这些应用程序中,用户验证他们的电话号码,然后将应用程序权限授予他们的联系人,这样就可以显示已经注册的朋友 我想要两个表视图部分。一个部分用于非应用程序上的联系人,另一个部分用于电话号码与解析列“phoneNumber”中的电话号码匹配的联系人。第二部分是导致此错误的原因,它告诉我一次运行多个查询 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“此查询具有未完成的网络连接。你必须等到它完成。” 下面是我试图运行的代码:Ios 从Parse中检索应用程序上已存在的联系人时出现问题,ios,swift,parse-platform,Ios,Swift,Parse Platform,我希望做一些类似于最流行的应用程序(如Snapchat)的事情,在这些应用程序中,用户验证他们的电话号码,然后将应用程序权限授予他们的联系人,这样就可以显示已经注册的朋友 我想要两个表视图部分。一个部分用于非应用程序上的联系人,另一个部分用于电话号码与解析列“phoneNumber”中的电话号码匹配的联系人。第二部分是导致此错误的原因,它告诉我一次运行多个查询 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“此查询具有未完成的网络连接。
let query = PFUser.query()
for person in self.people! { // iterate through phone contacts
let numbers = person.phoneNumbers
let primaryNumber = numbers?.map({$0.value})[0] // pull contact's first phone number (i.e. main number)
dispatch_async(dispatch_get_main_queue()) {
query?.whereKey("phoneNumber", equalTo: primaryNumber!)
query?.getFirstObjectInBackgroundWithBlock({ (object, error) -> Void in
self.contactsOnTheApp.addObject(object!) // create array of users already on the app to then show in table view section
})
}
}
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
在循环外部定义
query
,然后在循环内部执行后台查询。在每个循环迭代中修改现有查询,但由于在修改下一次搜索的查询时第一个后台查询尚未完成,因此会收到错误消息
您可以在for循环中移动let query=PFUser.query()
,但是在单个查询中创建一个电话号码数组并使用containedIn
条件,然后循环返回结果会更有效
另外,您不需要
dispatch\u async
,因为您正在使用后台解析调用,并且不需要在主队列上调度重新加载。事实上,您执行重新加载太早了,因为您的查询不会完成。您需要从查询完成块重新加载。如果您也有一个查询,这将更容易 谢谢你的帮助。这很有效,但我正在使用containedIn处理查询。我有一个地址簿中所有电话号码的数组,但我的查询在解析中似乎没有找到匹配的电话号码。下面是查询的样子:let query=PFUser.query()query?.whereKey(“phoneNumber”,包含在:myContactSphoneNumber作为[AnyObject])query?.findobjectsInBackgroundithBlock({(objects,error)->Void in for existingUser in objects!{self.contactsOnApp.append(existingUser)}})