2016-02-25 3 views
0

Я пытаюсь написать запрос Swift, который получит объект в таблице Avatar, который соответствует столбцу указателя аватара пользователя. Следующий запрос не тянет никаких результатов:найти объекты Parse, соответствующие значению указателя?

var userAvatar = self.user["avatar"] 
let avatarQuery = PFQuery(className: "Avatar") 
avatarQuery.whereKey("objectId", equalTo: userAvatar) 
avatarQuery.limit = 1 
avatarQuery.findObjectsInBackgroundWithBlock{ 
    (results: [PFObject]?, error: NSError?) -> Void in 

    if error != nil { 
     print(error) 
    } else if let results = results as? [PFObject]! { 
     for result in results { 

Я думаю, что проблема в том, что whereKey положение ищет строку, но userAvatar является PFObject. Я попытался преобразовать PFObject в String, но это невозможно.

Я переусердствовал это? Как я могу просто получить объект Avatar, который соответствует PFObject, сохраненному в User -> avatar (Pointer)?

Спасибо!

EDIT: Благодаря Даниилу, это рабочий код (я думаю, добавив includeKey, возможно, помогло тоже):

let userAvatar = self.user["avatar"] as! PFObject 
let avatarQuery = PFQuery(className: "Avatar") 
avatarQuery.whereKey("objectId", equalTo: userAvatar.objectId!) 
avatarQuery.includeKey("avatar") 
avatarQuery.limit = 1 
avatarQuery.findObjectsInBackgroundWithBlock{ 
    (results: [PFObject]?, error: NSError?) -> Void in 

     if error != nil { 
      print(error) 
     } else if let results = results as? [PFObject]! { 

      for result in results { 

ответ

1

Так что я думаю, ваша проблема в том, что вы не должны сравнивать строки к PfObject объект не является строкой, но цена объекта может быть строкой, поэтому вам нужно сравнить что-то вроде object.id со строкой. Если это имеет смысл.

+0

Спасибо за ответ! Как мне это сделать? 'avatarQuery.whereKey (" objectId ", equalTo: userAvatar.objectId)' не работает, потому что 'equalTo' должен быть AnyObject – winston

+0

, вы можете принудительно отбросить его в anyObject с помощью' AnyObject (userAvatar.objectId) ' –

+0

' avatarQuery .whereKey ("objectId", equalTo: userAvatar.objectId) 'может помочь –

Смежные вопросы