我开始试用Realm数据库,但我不明白如何将这个层次结构写入数据库:
class Address {
Properties for the address object
}
class Street {
addresses = List<Address>()
Plus other properties
}
class Area {
streets = List<Street>()
}
class Manager {
areas = List<Area>()
}
如果我现在添加一个新区域,我应该拨叫realm.write { areas.append(newAreaObject) }
之类的内容吗?
将其添加到数据库中。那会写出所有的街道和地址吗?
如果我只想在街道上添加十个新地址怎么办?根据文档,List.append函数只能在write语句中。我应该做些像
这样的事情 for i in 0..<10 { addAddress(address) }
然后实施
Street.addAddress(Address)
{
realm.write {street.append(address)}
}
或者我可以致电for i in 0..<10 {street.append(address)}
然后致电realm.write { areas.add(newAreaObject, update: true)
}
就这样,我以正确的方式做到这一点,并没有做很多写入减慢速度。对于每个类中的每个追加都有一个写操作我感到很奇怪,例如,如果您生成一个包含十个街道的区域,每个街道就有100个地址,并且对于每个追加,都会将其写入数据库。
最好先将所有内容添加到列表中,然后将所有内容同时写入数据库。
我查看了文档,但我不明白。感谢您的任何评论!
答案 0 :(得分:0)
关于#1和#3:
对象的所有更改(添加,修改和删除)必须在写入事务中完成。
对于#2:
由于写入事务会产生不可忽略的开销,因此您应该构建代码以最大限度地减少写入事务的数量。
这意味着最好创建一个用于将对象添加到列表的事务,而不是:
for i in 0..<10 {
realm.write {
street.append(address)
}
}
你应该做
realm.write {
for i in 0..<10 {
street.append(address)
}
}