簡體   English   中英

解析查詢在Swift 2.0中不起作用

[英]Parse query not working in Swift 2.0

所以我有一個查詢,試圖在Parse中的數據庫中查找用戶。 由於某種原因,在更新到Swift 2.0之后,以下代碼出現以下錯誤。

無法將類型'([[AnyObject] ?, NSError?)-> Void'的值轉換為預期的參數類型'PFQueryArrayResultBlock?'

這是給我錯誤的代碼,我不確定為什么。 整個功能如下。

query.findObjectsInBackgroundWithBlock {
(results: [AnyObject]?, error: NSError?) -> Void in

如果有幫助,這就是整個功能。

func searchBarSearchButtonClicked(searchBar: UISearchBar) {

    searchBar.resignFirstResponder()

    let fullnameQuery = PFQuery(className: "_User")
    fullnameQuery.whereKey("fullname", containsString: searchBar.text)

    let usernameQuery = PFQuery(className: "_User")
    usernameQuery.whereKey("username", containsString: searchBar.text)

    let query = PFQuery.orQueryWithSubqueries([fullnameQuery, usernameQuery])

    query.findObjectsInBackgroundWithBlock {
        (results: [AnyObject]?, error: NSError?) -> Void in

         if error != nil {

             let myAlert = UIAlertController(title: "Alert", message: error?.localizedDescription, preferredStyle: UIAlertControllerStyle.Alert)

            let okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil)

            myAlert.addAction(okAction)
            self.presentViewController(myAlert, animated: true, completion: nil)
            return
         }

         if let objects = results as? [PFObject] {

            self.searchResults.removeAll(keepCapacity: false)

            for object in objects {

                self.searchResults.append(object)

            }

            dispatch_async(dispatch_get_main_queue()) {
                self.table.reloadData()
                self.searchController.resignFirstResponder()
           }
        }
    }

}

要正確調用此命令,您需要使用以下命令

        query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in
        if let objects = objects {
            if error == nil {
                for object in objects {
                    self.searchResults.append(object)
                }

                dispatch_async(dispatch_get_main_queue()) {
                    self.table.reloadData()
                    self.searchController.resignFirstResponder()
                }     
            } else {
                print("Error: \(error!) \(error!.userInfo)")
            }
        }
    }

更好的是,編譯器非常擅長基於方法簽名來推斷類型。 您真正需要的是:

query.findObjectsInBackgroundWithBlock {
    (results, error ) -> Void in

}

嘗試將其更改為

query.findObjectsInBackgroundWithBlock {
    (results: [PFObject]?, error: NSError?) -> Void in
    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM