2016-03-19 4 views
0

Я использую queryWithSubqueries накладывать более одного ограничения следующим образом:синтаксического анализа запроса возвращаются неправильные объекты

func getPosts() { 

    let getPostsQuery = PFQuery(className: "allPosts") 
    let getRightPostsQuery = PFQuery(className: "allPosts") 

    getPostsQuery.whereKey("userId", equalTo: userId) //userId is a string var storing a specific userId 
    getRightPostsQuery.whereKey("isItRight", equalTo: true) 

    let combinedQuery = PFQuery.orQueryWithSubqueries([getPostsQuery, getRightPostsQuery]) 
    combinedQuery.limit = 15 
    combinedQuery.orderByDescending("createdAt") 

    combinedQuery.findObjectsInBackgroundWithBlock { (posts, error) -> Void in 

     if let posts = posts { 

      self.postId.removeAll(keepCapacity: true) //postId is an array to store the postIds 

      for post in posts { 

       self.postId.append(post.objectId!!) 
      } 
     } 

     self.tableView.reloadData() 
    } 
} 

Я пытаюсь получить все нужные сообщения, размещенные пользователем, как описано его USERID. Я протестировал запрос, используя userId, который ничего не опубликовал. Странно то, что возвращаются объекты, которые не принадлежат этому конкретному пользователю. Затем я попытался использовать userId, который опубликовал что-то, и «неправильные» сообщения также извлекаются (isItRight = false), любые идеи? спасибо

ответ

0

Почему вы это делаете и используете комбинированный запрос?

getPostsQuery.whereKey("userId", equalTo: userId) //userId is a string var storing a specific userId 
getRightPostsQuery.whereKey("isItRight", equalTo: true) 

Постарайся делать это вместо

getPostsQuery.whereKey("userId", equalTo: userId) //userId is a string var storing a specific userId 
getPostsQuery.whereKey("isItRight", equalTo: true) 

Как Разбор Docs говорят: «Вы можете дать несколько ограничений, и объекты будут только в результатах, если они соответствуют всем ограничениям. Другими словами, это как И ограничений. "

Если вы хотите, есть еще один способ добавить Сдерживает к запросу

// Using NSPredicate 
let predicate = NSPredicate(format:"userId == '\(userId)' AND isItRight == 1") 
let query = PFQuery(className: "allPosts", predicate: predicate) 
+0

, который был немым от меня, спасибо! теперь это работает –

+0

Я рад, что это сработало для вас, ура! – BlackBox

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