2015-04-01 64 views
0

我試圖通過Parse爲tableview拉取用戶附近的位置,除了我只有一個白色屏幕或空表。解析查詢沒有任何回報

編輯:我忽略在提交近地點點查詢之前添加位置調用。在測試中,我發現該位置是在'geoPontForCurrentLocationInBackground'下確定的。但是,一旦建立了地點並且提交了查詢,用戶位置就不會在查詢中返回經度或緯度。此外,查詢不返回任何對象,我不知道爲什麼:

override func queryForTable() -> PFQuery! { 
    var query = PFQuery(className: "User") 

    PFGeoPoint.geoPointForCurrentLocationInBackground { 
     (userLocation: PFGeoPoint!, error: NSError!) -> Void in 
     if error == nil { 

     } 
    } 

    let point: PFGeoPoint = PFGeoPoint(latitude: self.userLoc.latitude, longitude: self.userLoc.longitude) 
    query.whereKey("location", nearGeoPoint: point, withinMiles: 50.0) 
    query.limit = 10 
    return query 
    } 

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!, object: PFObject!) -> PFTableViewCell! { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as Shops 
    if let object = object { 
     if let shopName = object.valueForKey("shopName") as? String { 
     cell.shopList.text = shopName 
    } 
    } 
    return cell as Shops 
} 

回答

0

我認爲問題在於Parse將用戶類視爲特殊類類。如果您將它視爲自定義類,則可能無法查詢User類。

正確且經過測試的方法是對PFUser的查詢功能。

var query = PFUser.query() 
+1

謝謝Eric。我嘗試用空參數省略類名,但它也沒有返回任何對象。 – Christine 2015-04-01 21:40:33

+0

那不是我提供的。 – ericgu 2015-04-01 21:43:55

+0

嘗試使用PFUser的查詢功能而不是PFQuery – ericgu 2015-04-01 21:44:46

0

您正在設置查詢,但從未實際執行它。 Per the Parse documents,您需要添加:

// Final list of objects 
queryResults = query.findObjects() 

queryForTable()return聲明之前,爲了得到的查詢對象。

+0

謝謝,亞當。我只是用'query.findObjects'來測試它,但它仍然沒有加載任何對象。我建議在方法建立後添加'var queryResults = NSString()'作爲第一行,然後按照建議添加'queryResults = query.findObjects()'。還用'query.findObjects()'運行它。 (我應該補充一點,我是Swift和Parse的新手;請原諒我的無知。) – Christine 2015-04-01 21:34:46

+0

您需要合併@ ericgu對自定義User類的建議,並確保您返回'queryResults'變量。 – 2015-04-02 01:12:17

+0

謝謝亞當! (太糟糕了,我不能檢查這兩個答案,因爲它是組合,如果可以的話,我會加快回復。) – Christine 2015-04-02 03:57:40