2015-11-13 3 views
1

Я пытаюсь выполнить запрос по выбранномуBook (это строка идентификатора объекта selectedBook). Тем не менее, я получаю эту ошибку: «[Ошибка]: для книги с указателем требуется значение указателя (код: 102, версия: 1.8.2)». Я считаю, что мне нужно сделать запрос с фактическим объектом книги, а не с идентификатором objectID, как я могу это сделать? Заранее спасибо!!Поиск Parse using pointer возвращает ошибку «Поле указателя требует значения указателя»

var query = PFQuery(className:"UserTags") 
     query.whereKey("book", equalTo:selectedBook) 

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

     if error == nil { 

      // The find succeeded. 
      print("Successfully retrieved \(objects!.count) tags.") 

      // Do something with the found objects 
      if let objects = objects as? [PFObject] { 

       for object in objects { 

        print(object.objectId) 
       } 
      } 

     } else { 
      // Log details of the failure 
      print("Error: \(error!)") 
     } 

ответ

2

Выяснил это. Вот код на тот случай, если кто-то еще сталкивается с этим:

let pointer = PFObject(withoutDataWithClassName:"Book", objectId: booksObjectID) 

var query = PFQuery(className: "UserTags") 

query.whereKey("book", equalTo: pointer) 

query.includeKey("book") 

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

    for object in objects! { 

     self.userTags.addObject(object) 
    } 
} 
0

От documentation:

InvalidQuery - 102 - Error code indicating you tried to query with a datatype that doesn't support it, like exact matching an array or object.

Описание ошибки говорит о многом. Такой запрос не поддерживает организацию очередей по объекту (в вашем случае, книга). Вы должны использовать тип данных, который поддерживается - например, запрос по идентификатору книги или имени, которые являются более примитивными типами данных.

+0

Благодарим за отзыв. Поэтому я с вами о запросе, требующем другого типа данных. В моем примере selectedBook - это строка идентификатора bookID. Что я должен использовать вместо этого идентификатора объекта, чтобы иметь возможность искать теги только для этой книги? Спасибо за твою помощь! – tahoecoop

+0

А каков тип ключевой «книги»? Разве это не объект? – RaffAl

+0

«book» - это столбец в моем классе userTags, который содержит указатель на объект книги. Пользователь выбирает конкретную книгу в контроллере предыдущего вида. Затем я пытаюсь передать эту книгу objectID в запрос пользовательских тегов только для этой выбранной книги. Я просто не понимаю, что мне нужно положить в 'query.whereKey (« book », equalTo: selectedBook)', чтобы заставить его вытащить теги для книги. Спасибо!! – tahoecoop

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