2016-02-08 2 views
0

Я продолжаю получать эту ошибку при попытке обновить PFObject [Ошибка]: результаты не совпадают с запросом. (Код: 101, Версия: 1.12.0) «вот мой код:[Ошибка]: результаты не совпадают с запросом. (Code: 101, Version: 1.12.0) в Parse using Swift

let userQuery = PFQuery(className: "User") 

    userQuery.getObjectInBackgroundWithId("cE3DE48Fa9") { 
     (userQueryObject: PFObject?, error: NSError?) -> Void in 
     if error != nil { 
      print(error) 
     } 
     else if let userQueryObject = userQueryObject { 

      userQueryObject["House_Motto"] = self.campaignMottoTextBox.text 

      userQueryObject.saveInBackground() 


     }  } 

Что мне делать?

Вот мой новый код:

currentUser!.setObject(self.campaignMottoTextBox.text!, forKey: "House_Motto") 
+0

При запросе класса User в Parse вы должны использовать конкретный пользовательский запрос: 'let userQuery: PFQuery = PFUser.query()!'. Я могу опубликовать пример, если вы хотите, однако мой пример использует 'userQuery.findObjectsInBackgroundwithBlock()' в отличие от вашего, где вы пытаетесь получить объект для заданного ID – MikeG

+0

@MikeG могу ли я увидеть пример? –

+0

да один момент ... – MikeG

ответ

0

Вот пример того, как использовать PFUser.query() для запроса класса пользователя в разборе, обратите внимание, мой пример использует findObjectsInBackgroundWithBlock(), а не getObjectsInBackgroundWithId()

var userData1 = [String]() 
var userData2 = [Double]() 
var allUsers = [PFUser]() 

func fetchUserData() { 
    let userQuery: PFQuery = PFUser.query()! 

    userQuery.orderByAscending("username") 
    userQuery.whereKey("username", notEqualTo: (currentUser?.username)!) 
    userQuery.findObjectsInBackgroundWithBlock({ 
     (users, error) -> Void in 

     var userData = users! 

     if error == nil { 
      if userData.count >= 1 { 
       for i in 0...users!.count-1 { 
        self.userData1.append(userData[i].valueForKey("columnNameInParse1") as! String) 
        self.startTimes.append(userData[i].valueForKey("ColumnNameInParse2") as! Double) 
       } 
      } 

      self.allUsers = users as! [PFUser] 
      self.tableView.reloadData() 
     } else { 
      print(error) 
     } 
    }) 
} 

и для обновления значения для данного пользователя вы будете делать ...

func updateObjectInParse(){ 
    currentUser?.setObject(campaignMottoText.text, forKey: "columnNameInParse") 
    currentUser?.saveInBackground() 
} 

где "columnNameInParse" - это имя столбца, для объекта, который вы хотите обновить в синтаксическом анализе. Это чувствительно к регистру. И currentUser является PFUser.currentUser

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