私は以下のようにレルムモデルクラスを持っています。レルムのリストのデフォルト値
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
が不足しているため、クラスが値辞書から作成された順序が崩れますか?それでフィールドの値をbumpLocations
プロパティに追加し、calories
値をbrakeLocations
プロパティに追加します。
私にはクラッシュレポートがあります。
デバッグコンソールでこのoutputを手に入れました。
こんにちは、返信ありがとうございます。しかし、私は 'realm.create'でクラッシュしています。私は原因と思われるもので質問を更新しました。また、問題をより詳しく説明するために、上記で少し追加したサンプルコードを変更しました。 – Isuru
あなたの推論は間違っています。私の答えですでに説明したように、これらの値はデフォルト値を持つので、イニシャライザで値を指定する必要はありません。クラッシュはおそらく 'self.trip'が' nil'であるために起こりますが、もっとコードを見ることなく、確かにそれを伝えることはできません。 –
私はそれが助けであれば私が得たクラッシュレポートを追加しました。 – Isuru