2015-06-11 2 views
0

Я читал документацию относительно объектов экономии, связанных с другими объектами, но я все время застреваю.Сохранение связанных объектов с помощью первичного объекта в парсе

Вот упрощенный вид моей схемы:

Класс: Самолет

Столбцы: objectId (String), name (String)

Класс: CustomValue

Колонны: objectId (String), value (String), aircraft (Pointer<Aircraft>)

Когда я сэкономю самолет, могут ли пользовательские значения, указывающие на него, автоматически сохраняться вместе с ним? Или мне нужно сохранять собственные значения отдельно? Я делаю это в Swift, но я подозреваю, что тот же принцип применяется независимо от SDK.

var aircraft = PFObject(className: "Aircraft") 
aircraft["name"] = "aaa" 

var customValue1 = PFObject(className: "CustomValue") 
    customValue1["value"] = "bbb" 
    customValue1["aircraft"] = aircraft 

var customValue2 = PFObject(className: "CustomValue") 
    customValue2["value"] = "ccc" 
    customValue2["aircraft"] = aircraft 

aircraft.saveInBackgroundWithBlock{() -> Void in 
    //Save aircraft, customValue1, customValue2 all together somehow? 
} 

Заранее благодарен.

ответ

1

Вы почти у цели. Проблема заключается в том, что CustomValue связан с Aircraft, но aircraft не связан с объектами CustomValue, поэтому сохранение aircraft не приведет к сохранению объектов CustomValue.

Что вам нужно сделать, это сохранить все ваши объекты CustomValue, и aircraft будет сохранен правильно.

Так, что-то вроде ...

PFObject.saveAllInBackground([customValue1, customValue2]) { result, error in 
    // Now all three are saved together, even though aircraft wasn't explicitly saved. 
} 
+0

Ах, блестящие! Это сработало, спасибо! Я также не знал о 'PFObject.saveAllInBackground', что очень удобно, когда у меня есть много объектов для сохранения. Благодаря тонну! –

+0

Стоит также отметить, что 'saveAllInBackground' может принимать объекты customValue AND. Это полезно, потому что мой объект самолета требуется, но пользовательские значения являются необязательными. Если все сохраненные объекты должны быть сохранены, они будут сохранены один раз, даже если не заданы какие-либо пользовательские значения. :) –

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