2015-09-07 4 views
0

Я пытаюсь внести изменения в данные, уже сохраненные в основных данных в Parse. Но он не вносит необходимых изменений. И я просмотрел документацию для разбора относительно объектов здесь: https://parse.com/docs/ios/guide#objects. И кажется, что я делаю именно то, что мне говорит документ. Может, я что-то упустил? Вот мой код:Parse не обновляет основные данные Swift

import UIKit 
import Parse 

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     var products = PFObject(className:"Products") 
     products["name"] = "ice cream" 
     products["description"] = "Strawberry" 
     products["price"] = 4.99 
     products.saveInBackgroundWithBlock { 
      (success, error) -> Void in 
      if (success) { 
       println("Object saved with id \(products.objectId)") 
      } else { 
       println("Not successful!") 
       print(error) 
      } 
     } 

//ignore the code below this line for now please :) 

     var query = PFQuery(className: "Products") 

     query.getObjectInBackgroundWithId("7lmnxHxibK", block: { (object: PFObject?, error) -> Void in 
      if error != nil { 
       print(error) 
      } else if let product = object { 
       print("YO") 
       product["description"] = "Rocky Road" 
       product["price"] = 5.99 
       products.saveInBackground() 
      } 
     }) 
    } 
} 

Так код выше созданный объект с идентификатором 7lmnxHxibK. description - Strawberry, name - ice cream, а price - 4.99. Это работало так, как должно. Так что теперь, как попытка изменить атрибуты в объекте с идентификатором 7lmnxHxibK, я написал следующий код:

var query = PFQuery(className: "Products") 

query.getObjectInBackgroundWithId("7lmnxHxibK", block: { (object: PFObject?, error) -> Void in 
    if error != nil { 
     print(error) 
    } else if let product = object { 
     print("YO") 
     product["description"] = "Rocky Road" 
     product["price"] = 5.99 
     products.saveInBackground() 
    } 
}) 

Этот код должен внести необходимые изменения объекта с идентификатором 7lmnxHxibK. Но вместо внесения необходимых изменений в атрибуты объекта он создает новый объект с его description, name и price все находящиеся (undefined). У кого-нибудь есть решение исправить это?

+0

хе-хе, вы следуете за курсом Роба Персиваля? –

+0

Просто убедитесь, что вы пытаетесь отредактировать этот «объект», который в данном случае является клубничным мороженым? –

+0

Ха-ха, да. Вы тоже? Если да, что вы думаете об этом? – Jae

ответ

0

Вы должны изменить products.saveInBackground() на product.saveInBackground(). Также к тому моменту, когда вы вызываете свой второй синтаксис запроса, не может быть сделано сохранение объекта в первый раз.

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