所以我尝试做的是根据objectID以外的属性从Parse.com数据库中检索信息。更具体地说,我想在不使用objectID的情况下检索对象,因此我可以读取其ADDRESS列。到目前为止的逻辑:
编写一个查询,返回餐馆名称与' resto'相同的行。
(这就是我被困的地方)从PFQuery中检索餐馆的地址,并将该String值分配给addressLabel.text变量。 这是我的代码:
class FinalView: UIViewController{
var resto = 'Eddies Cafe'
var address:String!
//var phone:String!
@IBOutlet var restoLabel: UILabel!
@IBOutlet var addressLabel: UILabel!
@IBOutlet var phoneLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
//the below query returns only one row
var query = PFQuery(className: "Restaurants")
query.whereKey("NAME", equalTo: resto)
var obj = PFObject.getObjectWithID("i dont want this")
address = obj["ADDRESS"] as? String
restoLabel.text = resto
addressLabel.text = address
}
}
我一直在阅读有关如何操作的内容,但我所看到的只是如何通过它的objectID从查询中检索PFObject。我知道objectId是我自己,因为它是我的parse.com实例,但我需要应用程序能够根据餐馆名称从后端检索数据值。有没有解决的办法?我错了吗?提前致谢。
答案 0 :(得分:1)
使用findObjectsInBackgroundWithBlock
尝试var query = PFQuery(className:"Restaurant")
query.whereKey("adress", equalTo:"Eddies Cafe")
query.limit = 1
query.findObjectsInBackgroundWithBlock {
(restaurants: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
if let objects = restaurants as? [PFObject] {
var firstObject = objects[0]
dispatch_async(dispatch_get_main_queue(),{
self.restoLabel.text = firstObject["restaurant"] as? String
self.adressLabel.text = firstObject["adress"] as? String
self.phoneLabel.text = firstObject["phone"] as? String
})
}
}
}
我使用dispatch_async处理主队列中的视图更新,以便您可以立即查看结果。