2015-02-28 2 views
0

Я строю своего рода горячее или не стильное приложение в Swift, где пользователь может голосовать: HOT, NOT и MAYBE на изображении соответственно.Как сделать запрос «не в» в парсе

За каждый раз, когда пользователь попадает на изображение, они голосуют, нажимая IBAction, который запускает запрос, который отображает результат общего количества голосов и итоговых чисел из Parse, как показано в моем коде ниже.

Я планирую иметь 1000 изображений.

Могу ли я предварительно загрузить некоторые идентификаторы объектов, соответствующие каждому соответствующему изображению, а затем, когда пользователь голосует на изображении, данные уже предварительно загружены/запрошены из разбора? Как я могу это сделать? В моем предыдущем вопросе кто-то рекомендовал использовать запрос NOT IN в Parse. Как сделать запрос NOT IN в Parse и как я буду это делать?

На данный момент я пишу запрос для каждого ObjectID, который будет принимать 1000 запросов от 1000 различных изображений ... Очевидно, что это невозможно.

Дальнейшие объяснения код:

переменная swipePosition является просто счетчик, который подсчитывает, какое изображение пользователь находится на. Хранимые изображения находятся в массиве, который теперь хранится на Xcode. Может быть, они могут быть предварительно загружены, если они хранятся в Parse?

(я только показывать функцию «hotButtonQuery», но есть также функция Не и Может buttonQuery.)

Есть ли способ, чтобы просто этот код так, чтобы это масштабируемая? Потому что на данный момент я не могу масштабировать последние 25 изображений.

func hotButtonQuery() { 
    if swipePosition == 0 { 
     var query = PFQuery(className:"UserData") 
     query.getObjectInBackgroundWithId("RlvK3GhfqE") { 
      (userData: PFObject!, error: NSError!) -> Void in 
      if error != nil { 

       println(error) 
      } 

      else { 
      userData.incrementKey("totalVotes", byAmount: 1) 
      userData.incrementKey("hot", byAmount: 1) 

       var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger 

       var updateHotsUILabel = userData.objectForKey("hot") as NSInteger 

       userData.saveInBackground() 

       println("parse was updated!") 

       self.totalVotesLabel.text = String(updateTotalVotesUILabel) 
       self.totalHotsLabel.text = String(updateHotsUILabel) 
      } 
     } 
    } else if swipePosition == 1 { 
      var query = PFQuery(className:"UserData") 
      query.getObjectInBackgroundWithId("30WlVtgurP") { 
       (userData: PFObject!, error: NSError!) -> Void in 
       if error != nil { 

        println(error) 
       } 

       else { 
        userData.incrementKey("totalVotes", byAmount: 1) 
        userData.incrementKey("hot", byAmount: 1) 


        var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger 

        var updateHotsUILabel = userData.objectForKey("hot") as NSInteger 

        //println(userData.objectForKey("totalVotes")) 
        //println("total HOTs:") 
        //println(userData.objectForKey("hot")) 

        userData.saveInBackground() 

        println("parse was updated!") 


        self.totalVotesLabel.text = String(updateTotalVotesUILabel) 
        self.totalHotsLabel.text = String(updateHotsUILabel) 


       } 
      } 
    } else if swipePosition == 3 { 
     var query = PFQuery(className:"UserData") 
     query.getObjectInBackgroundWithId("5D6ARjk3xS") { 
      (userData: PFObject!, error: NSError!) -> Void in 
      if error != nil { 

       println(error) 
      } 

      else { 
       userData.incrementKey("totalVotes", byAmount: 1) 
       userData.incrementKey("hot", byAmount: 1) 


       var updateTotalVotesUILabel = userData.objectForKey("totalVotes") as NSInteger 

       var updateHotsUILabel = userData.objectForKey("hot") as NSInteger 

       //println(userData.objectForKey("totalVotes")) 
       //println("total HOTs:") 
       //println(userData.objectForKey("hot")) 

       userData.saveInBackground() 

       println("parse was updated!") 


       self.totalVotesLabel.text = String(updateTotalVotesUILabel) 
       self.totalHotsLabel.text = String(updateHotsUILabel) 


      } 
     } 
    } 

ответ

1

просто использовать

query.whereKey("key", doesNotMatchKey: "matchcheck", inQuery: innerQuery) 
0

Примером не находится в:

var query = PFUser.query() 

    if (friendsFilter){ 
     var friendsRelation:PFRelation = PFUser.currentUser().relationForKey("friendsRelation") 
     query = friendsRelation.query() 
    } 
    else{ 
     var friendsRelation:PFRelation = PFUser.currentUser().relationForKey("friendsRelation") 
     var innerQuery = friendsRelation.query() 
     query = PFUser.query() 
     query.whereKey("username", doesNotMatchKey: "username", inQuery: innerQuery) 
+0

Так что бы это сделать? – lukaivicev

+0

Первый запрос получает всех пользователей. Внутренний запрос связывает всех друзей, связанных с PFRelation, с текущим пользователем. Последняя строка переводится как «Получить всех пользователей, с которыми я не знаком». – ericgu

+0

Большое спасибо. Любая идея, как это может помочь мне с моим кодом? – lukaivicev

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