Swift Parse - 此查询有一个突出的网络连接错误

Posted

技术标签:

【中文标题】Swift Parse - 此查询有一个突出的网络连接错误【英文标题】:Swift Parse - This query has an outstanding network connection error 【发布时间】:2017-11-22 18:41:14 【问题描述】:

在同一个视图控制器上进行多个查询时,我无法使用解析,我知道它们需要是异步的,这就是问题所在,但我不知道如何解决这个问题。我在这个页面上有 3 个按钮,一个显示用户的 pod,一个显示他的关注者,一个显示他正在关注的人。代码如下:

   // Query for user's pods

    let podQuery = Pod.query()
    podQuery?.whereKey("createdBy", equalTo: currentUser as Any)
    podQuery?.includeKey("audio")
    podQuery?.findObjectsInBackground(block:  (objects, error) in
        if error != nil 
            print("Error")
         else if let pods = objects 
            self.pods.removeAll()
            for pod in pods 
                if let pod = pod as? Pod 
                    self.pods.insert(pod, at: 0)
                
            
            self.tableview.reloadData()
        
    )

    //Query for the user's subscribers

    let subscribersQuery = Following.query()
    subscribersQuery?.whereKey("following", equalTo: PFUser.current()?.objectId as Any)
    subscribersQuery?.includeKey("following")
    subscribersQuery?.findObjectsInBackground(block: (objects, error) in
        if let objects = objects 
            for object in objects 
                self.subscribers.insert(object as! PFUser, at: 0)
            
        
    )

    //Query for the users that the user is subscribed to

    let subscribedQuery = Following.query()
    subscribedQuery?.whereKey("follower", equalTo: PFUser.current()?.objectId as Any)
    subscribersQuery?.includeKey("follower")
    subscribedQuery?.findObjectsInBackground(block:  (objects, error) in
        if let objects = objects 
            for object in objects 
                self.subscribed.insert(object as! PFUser, at: 0)
            
        
    )

我在第 2 次和第 3 次查询中遇到错误。

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“此查询具有未完成的网络连接。你必须等到它完成。'

如果问题需要更多上下文/代码,请告诉我。谢谢你

【问题讨论】:

【参考方案1】:

我认为按照描述,您可能是指:

let subscribersQuery = Followers.query()  //Not Following.query()??

在这种情况下,进行此更改将使错误消失。如果您的意思是“关注”,那么这可能是问题所在:

我遇到了这个问题,原因是我在后续解析访问中使用了相同的查询对象。这是否适合您取决于 PFObject.query() 的行为方式。我发现文档不够清楚。如果它返回一个先前兑现的查询,那么:

let subscribersQuery = Following.query()
//....
subscribersQuery?.findObjectsInBackground(block: (objects, error) in(
//..
let subscribedQuery = Following.query()
//....
subscribedQuery?.findObjectsInBackground(block: (objects, error) in(
//..

在这里,您正在对同一查询执行 findObjectsInBackground,这将导致错误。 在显式创建新查询的地方试试这个。这对我有用:

subscribersQuery = PFQuery(className: Following) //Again, did you mean Followers here?
subscribedQuery = PFQuery(className: Following)

【讨论】:

以上是关于Swift Parse - 此查询有一个突出的网络连接错误的主要内容,如果未能解决你的问题,请参考以下文章

对我关注的用户进行Swift Parse查询

iOS 如何优化数据库 Parse swift 4 的查询

使用 Parse Swift 在 mongoDB 上进行查询

在 Swift Parse SDK 中使用 Pointer<_User> 进行查询

Swift 无法从 parse.com 检索图像

使用 Parse 和 Swift 的一个键上的两个查询约束