2015-12-18 4 views
2

У меня есть класс избранных пользователей, который хранит объект пользователя и объект события, он устанавливается, когда пользователь выбирает событие.Parse.com - Получение отношения с использованием Swift

Я хотел бы отобразить полный список избранных пользователей. Поэтому я запрашиваю класс избранного, чтобы получить объекты события, а затем попытаюсь запросить таблицу событий, чтобы она соответствовала объекту события из избранного с фактическим классом событий, чтобы вытащить имя и идентификатор события. В рубине, например, предполагающие отношения/ассоциация установка, я бы просто позвонить:

favorite.event.name 
favorite.event.id 

Что это эквивалент в Swift? Вот что я до сих пор, но что-то говорит мне, что я перекомплексирую его, и я надеюсь, что для получения данных через отношения доступны простые методы.

let query = PFQuery(className: "Favorite") 
    query.includeKey("eventId") 
    query.whereKey("createdBy", equalTo:userId!) 
    query.findObjectsInBackgroundWithBlock { (favorites:[PFObject]?, error:NSError?) -> Void in 

     if (error == nil){ 
      print("Favorite Count: \(favorites!.count)") 
      print("Favorite Event IDs: \(favorites!)") 

      for favorite in favorites! { 
       print("Favorite: \(favorite)") 

       let eventNameQuery = PFQuery(className: "Event") 
       eventNameQuery.whereKey("eventId", equalTo:favorite) 
       eventNameQuery.findObjectsInBackgroundWithBlock { (events:[PFObject]?, error:NSError?) -> Void in 

        if (error == nil){ 
         print(events!.count) 
         print(events!) 

         for event in events! {        
          self.favoriteListItems.append(event.objectId! as String) 
          self.favoriteListIds.append(event.objectId! as String) 
         } 
        } 
       } 
      } 
      self.savedEventsListTableView.reloadData() 
     } else { 
      print("error fetching objects") 
     } 
    } 
} 

Когда я запускаю это, я получаю нулевой результат ... когда я знаю, что в ядре синтаксического анализа У меня есть объекты, которые соответствуют как, как показано ниже:

Любимый Класс: Favorite Class with event object and user object

Класс событий : Event Class

+0

так в чем проблема, что у вас есть? – Lamar

+0

@ Lamar - да, это поможет. обновлено. Благодарю. – jakeatwork

+0

Картина просто сказала нам, что ... эта часть вашей проблемы заключается в том, что вы используете указатель PFUser, а не objectId – Lamar

ответ

1

Прежде всего запроса для указателя на объект пользователя, а не пользователя objectId.

query.whereKey("createdBy", equalTo:PFUser.currentUser()!) 

Дальше здесь вы, вероятно, захотите добавить название события.

for event in events! { 
self.favoriteListItems.append(event["eventName"] as! String) 
self.favoriteListIds.append(event.objectId! as String) 
} 
+0

ok ... сделал эти изменения, но все еще показывает пустой массив. пользовательская часть работает, потому что когда я печатаю список избранных и объекты, я вижу их в консоли. поэтому первый запрос работает. это подзапрос, возвращающий пустой массив. поэтому каким-то образом запрос класса Event с любимым объектом не тянет никаких связанных данных. Я предполагаю, что эта строка неверна: 'eventNameQuery.whereKey (" eventId ", equalTo: favorite)' – jakeatwork

+0

Попробуйте заменить 'eventNameQuery.whereKey (" eventId ", equalTo: favorite)' to 'eventNameQuery.whereKey (" objectId ", equalTo: (любимый [" eventId "] as! PFObject) .objectId)' немного грубо, но давайте посмотрим, будет ли это работать или нет – njuri

+0

И еще один: ваш вид таблицы пуст, вероятно, потому, что вы вызываете 'self .savedEventsListTableView.reloadData() '* before * выборка ваших объектов' Event'. – njuri

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