Swift 使用指针解析查询
Swift Parse Query Using A Pointer
我必须查询一个名为 "Commitment" 的 class,它有一个名为 "need" 的指针。我需要能够在查询 Commitment 时访问 need 指针中的数据。我必须查询 Commitment,因为我必须针对当前用户检查 "committer" 对象。本质上我希望能够看到当前用户已经承诺的需求。
承诺Class:
需要Class:
let query = PFQuery(className: "Commitment")
query.order(byDescending: "createdAt")
query.whereKey("committer", equalTo: PFUser.current()!)
query.includeKey("need")
query.findObjectsInBackground {
(objects: [PFObject]?, error: Error?) -> Void in
if let objects = objects as [PFObject]? {
self.committment = []
self.commitObject = []
for object in objects {
self.committment.append(Committment(id: object.objectId!, needName: object["needName"] as! String))
self.commitObject.append(object)
}
self.tableView.reloadData()
} else {
print("failure")
}
}
这是我当前的查询。 needName 上的 returns nil 显然是行不通的。感谢任何帮助。
你得到 nil 的原因是因为你没有访问需要的对象,但你试图从 Commitment 对象中获取它
只需将您的代码更改为如下所示:
let query = PFQuery(className: "Commitment")
query.order(byDescending: "createdAt")
query.whereKey("committer", equalTo: PFUser.current()!)
query.includeKey("need")
query.findObjectsInBackground {
(objects: [PFObject]?, error: Error?) -> Void in
if let objects = objects as [PFObject]? {
self.committment = []
self.commitObject = []
for object in objects {
let need = object["need"] as [PFObject]?
self.committment.append(Committment(id: object.objectId!, needName: need["needName"] as! String))
self.commitObject.append(object)
}
self.tableView.reloadData()
} else {
print("failure")
}
}
请注意,我首先访问 need 对象并从那里提取 needName 属性.
顺便说一句!我不确定语法是否 100% 准确(我用自由式写的)但我相信你明白了..
我必须查询一个名为 "Commitment" 的 class,它有一个名为 "need" 的指针。我需要能够在查询 Commitment 时访问 need 指针中的数据。我必须查询 Commitment,因为我必须针对当前用户检查 "committer" 对象。本质上我希望能够看到当前用户已经承诺的需求。
承诺Class:
需要Class:
let query = PFQuery(className: "Commitment")
query.order(byDescending: "createdAt")
query.whereKey("committer", equalTo: PFUser.current()!)
query.includeKey("need")
query.findObjectsInBackground {
(objects: [PFObject]?, error: Error?) -> Void in
if let objects = objects as [PFObject]? {
self.committment = []
self.commitObject = []
for object in objects {
self.committment.append(Committment(id: object.objectId!, needName: object["needName"] as! String))
self.commitObject.append(object)
}
self.tableView.reloadData()
} else {
print("failure")
}
}
这是我当前的查询。 needName 上的 returns nil 显然是行不通的。感谢任何帮助。
你得到 nil 的原因是因为你没有访问需要的对象,但你试图从 Commitment 对象中获取它 只需将您的代码更改为如下所示:
let query = PFQuery(className: "Commitment")
query.order(byDescending: "createdAt")
query.whereKey("committer", equalTo: PFUser.current()!)
query.includeKey("need")
query.findObjectsInBackground {
(objects: [PFObject]?, error: Error?) -> Void in
if let objects = objects as [PFObject]? {
self.committment = []
self.commitObject = []
for object in objects {
let need = object["need"] as [PFObject]?
self.committment.append(Committment(id: object.objectId!, needName: need["needName"] as! String))
self.commitObject.append(object)
}
self.tableView.reloadData()
} else {
print("failure")
}
}
请注意,我首先访问 need 对象并从那里提取 needName 属性.
顺便说一句!我不确定语法是否 100% 准确(我用自由式写的)但我相信你明白了..