2017-09-12 25 views
0

我有一個Realm模型類,如下所示。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) 

在創建這些對象時,不存在要被添加到屬性bumpLocationsbrakeLocations值。所以我需要爲這些字段添加默認值,對吧?

類型List的屬性的默認值是什麼?

我碰到了realm.create。我認爲這是因爲create函數期望模型類的所有屬性都按照在類中指定的方式在字典中列出。並且由於它缺少bumpLocationsbrakeLocations,它會混淆從值字典中創建類的順序?如在它中將distance字段的值添加到bumpLocations屬性,並將calories值添加到brakeLocations屬性等。

我得到的崩潰報告。

Report #1

Report 2

得到這個output在調試控制檯。

回答

0

不,您不需要爲兩個列表添加默認值,因爲它們已經具有Realm對象類定義中定義的空List的默認值。

let bumpLocations = List<BumpLocation>()括號創建線是用於調用init方法沒有任何輸入參數的速記符號,所以這行實際上分配一個空ListbumpLocations變量。

class Trip: Object { 
    ... 
    let bumpLocations = List<BumpLocation>() 
    let brakeLocations = List<BrakeLocation>() 
} 

下面的代碼是完全有效的。

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, 
] 
try! realm.write { 
    realm.create(Trip.self, value: tripData) 
} 
+0

嗨,感謝您的回覆。但是,我正在'realm.create'發生崩潰。我更新了我相信是原因的問題。我還更改了上面添加的示例代碼,以便更好地說明問題。 – Isuru

+0

你的推理是錯誤的。正如我在我的回答中已經解釋的那樣,這些值有一個默認值,所以你不需要在初始化器中指定一個值。最有可能發生崩潰的原因是'self.trip'爲'nil',但沒有看到更多的代碼,我無法確定。 –

+0

我添加了我得到的崩潰報告,如果有任何幫助。 – Isuru