Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.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 内部查询解析_Ios_Swift_Xcode_Mongodb_Parse Platform - Fatal编程技术网

Ios 内部查询解析

Ios 内部查询解析,ios,swift,xcode,mongodb,parse-platform,Ios,Swift,Xcode,Mongodb,Parse Platform,我试图链接一个用户创建的、链接到收件人的票证,但我没有得到任何回复,我能够从票证表中获取票证,但innerquery的匹配似乎没有链接。离开解析文档,我尝试使用内部查询作为链接或桥接,如下所示: let innerQuery = PFQuery(className:"Tickets") let query = PFQuery(className: "Messages") //get all tickets for current user inn

我试图链接一个用户创建的、链接到收件人的票证,但我没有得到任何回复,我能够从票证表中获取票证,但innerquery的匹配似乎没有链接。离开解析文档,我尝试使用内部查询作为链接或桥接,如下所示:

let innerQuery = PFQuery(className:"Tickets")
        let query = PFQuery(className: "Messages")

        //get all tickets for current user
        innerQuery.whereKey("user", equalTo: PFUser.current()?.objectId as Any)
        //objectId is ticketId in tickets table
        innerQuery.includeKey("objectId")
        //match to ticketId in messages table
        query.whereKey("ticketId", matchesQuery: innerQuery)

        do {
            let returnedObjects = try query.findObjects()
            for object in returnedObjects {
                let sender = object["sender"] as? String
                }
            }
        } catch {

        }

首先,当我们需要在Parse Server中进行内部查询时,我们将把列保存为指针对象。因此,这里您需要将消息表中的ticketId列保存为Tickets类的指针类。您可以这样保存它:

let pointerObj = [“__type": "Pointer", "className": "Tickets", "objectId": "yourClassObjectId"]
messagePraseObj.setValue(pointerObj, forKey: “ticketId")
之后,您可以使用以下代码来完成任务。我在我的项目中使用了它。 我使用了iOS SDK版本1.17.3和swift 4

    let innerQuery = PFQuery.init(className: "Tickets")
    innerQuery.whereKey("user", equalTo: PFUser.current()?.objectId as Any)

    let query = PFQuery.init(className: "Messages")
    query.whereKey("ticketId", matchesQuery: innerQuery)
    query.includeKey("ticketId")

    query.findObjectsInBackground { (returnedObjects, error) in
        if error == nil && returnedObjects != nil {
            for object in returnedObjects! {
                let ticket = object.value(forKey: "ticketId") as! PFObject
                let sender = ticket.value(forKey: "user") as? String ?? ""
                print("User ID: \(sender)")
            }
        }
    }
有关更多信息:


希望它能对您有所帮助。

我注意到您用来链接表的列是字符串而不是指针。指针应该被用作其他表的键。这是很大的帮助,谢谢!现在,我想我唯一的另一个问题是,是否有一种更简单的方法,可以像我所能做的那样,在Messages表中的同一个'ticketId'列上作为一个指针进行检索,将其作为一个字符串值?(即:query.whereKey(“ticketId”,equalTo:“ticketId31434”))因为我不确定如果我不得不在一个不同的查询上进行双重筛选,而该列不是作为一个内部查询参与的话,它会对性能产生什么影响“Objected2421”)),以防将来有人偶然发现