Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从Parse中检索应用程序上已存在的联系人时出现问题_Ios_Swift_Parse Platform - Fatal编程技术网

Ios 从Parse中检索应用程序上已存在的联系人时出现问题

Ios 从Parse中检索应用程序上已存在的联系人时出现问题,ios,swift,parse-platform,Ios,Swift,Parse Platform,我希望做一些类似于最流行的应用程序(如Snapchat)的事情,在这些应用程序中,用户验证他们的电话号码,然后将应用程序权限授予他们的联系人,这样就可以显示已经注册的朋友 我想要两个表视图部分。一个部分用于非应用程序上的联系人,另一个部分用于电话号码与解析列“phoneNumber”中的电话号码匹配的联系人。第二部分是导致此错误的原因,它告诉我一次运行多个查询 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“此查询具有未完成的网络连接。

我希望做一些类似于最流行的应用程序(如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)}})