我有一个Realm模型类,如下所示 .
class Trip: Object {
dynamic var userId: String = ""
dynamic var id: Int = 0
dynamic var startTimestamp: Int64 = 0
dynamic var endTimestamp: Int64 = 0
let bumpLocations = List<BumpLocation>()
let brakeLocations = List<BrakeLocation>()
dynamic var distance: Double = 0.0
dynamic var calories: Double = 0.0
dynamic var averageSpeed: Double = 0.0
}
我像这样创建这个对象 .
let tripData: [String: Any] = [
"userId": self.trip!.userId,
"id": self.trip!.id,
"startTimestamp": self.trip!.startTimestamp,
"endTimestamp": self.trip!.endTimestamp,
"distance": self.trip!.distance,
"calories": self.trip!.calories,
"averageSpeed": self.trip!.averageSpeed
]
realm.create(Trip.self, value: tripData, update: true)
在创建这些对象时,没有值要添加到属性 bumpLocations
和 brakeLocations
. 所以我需要为这些字段添加默认值,对吧?
List
类型属性的默认值是什么?
我在 realm.create
遇到了崩溃 . 我认为这是因为 create
函数要求模型类的所有属性在类中以与在类中指定的方式相同的方式列出 . 因为它缺少 bumpLocations
和 brakeLocations
,它会弄乱从值字典创建类的顺序?因为它将 distance
字段的值添加到 bumpLocations
属性,将 calories
值添加到 brakeLocations
属性,依此类推 .
我得到的崩溃报告 .
在调试控制台中得到了这个output .
1 回答
不,您不需要为两个列表添加默认值,因为它们已经具有在Realm对象类定义中定义的空List的默认值 .
在
let bumpLocations = List<BumpLocation>()
行中,括号create是用于在没有任何输入参数的情况下调用init方法的简写表示法,因此该行实际上为bumpLocations
变量分配了一个空的List
.下面的代码完全有效 .