Swift:根据另一个属性

时间:2015-04-25 23:22:28

标签: swift parse-platform

所以我尝试做的是根据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实例,但我需要应用程序能够根据餐馆名称从后端检索数据值。有没有解决的办法?我错了吗?提前致谢。

1 个答案:

答案 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处理主队列中的视图更新,以便您可以立即查看结果。