Pit*_*Pan 9 realm ios swift realm-list
我有两节课.首先看起来像这样:
class Person: Object {
dynamic var owner: String?
var dogs: List<Dogs>()
}
Run Code Online (Sandbox Code Playgroud)
和第二类看起来像这样:
class Dogs: Object {
dynamic var name: String?
dynamic var age: String?
}
Run Code Online (Sandbox Code Playgroud)
现在在ViewController'viewDidLoad'中我Person用空创建对象List并将其保存在Realm中
func viewDidLoad(){
let person = Person()
person.name = "Tomas"
try! realm.write {
realm.add(Person.self)
}
}
Run Code Online (Sandbox Code Playgroud)
它的伟大工程,我能创造Person,当我尝试读取这个数据的问题开始SecondViewController在ViewDidLoad做这件事:
var persons: Results<Person>?
func viewDidLoad(){
persons = try! realm.allObjects()
}
Run Code Online (Sandbox Code Playgroud)
并尝试新添加Dog到List按钮的动作做:
@IBAction func addDog(){
let newDog = Dogs()
newDog.name = "Rex"
newDog.age = "2"
persons[0].dogs.append(newDog)
// in this place my application crashed
}
Run Code Online (Sandbox Code Playgroud)
在这里我的应用程序与信息崩溃:Can only add, remove, or create objects in a Realm in a write transaction - call beginWriteTransaction on an RLMRealm instance first.我如何添加新的Dog到List,我怎么能更新人[0]?我使用SWIFT 3.0
所述persons属性的类型的Results<Person>,它是含有一个集合Person由一个域管理对象.为了修改托管对象的属性,例如将新元素附加到列表属性,您需要在写入事务中.
try! realm.write {
persons[0].dogs.append(newDog)
}
Run Code Online (Sandbox Code Playgroud)