1
我嘗試讀取JSON和創建境界更新的對象,所以我的代碼:是不是需要在境界
func workWithFileJSON() {
//local file JSON
let file = Bundle.main.path(forResource: "MobileDbSchema", ofType: "json")!
let url = URL(fileURLWithPath: file)
let jsonData = NSData(contentsOf: url)!
//Parce JSON
let json = try! JSONSerialization.jsonObject(with: jsonData as Data, options: [])
try! realm.write {
//Create data from JSON to our objects
realm.create(DataRoot.self, value: json, update: true)
}
}
與類文件:我的第一次運行後
import Foundation
import RealmSwift
class DataRoot: Object {
dynamic var id = 0
dynamic var name = ""
let transport_type = List<Transport_type>()
override class func primaryKey() -> String? {
return "id"
}
}
class Transport_type: Object {
dynamic var id = 0
dynamic var name = ""
let routes = List<Routes>()
override class func primaryKey() -> String? {
return "id"
}
}
class Routes: Object {
dynamic var id = 0
dynamic var name = ""
let directions = List<Directions>()
override class func primaryKey() -> String? {
return "id"
}
}
class Directions: Object {
dynamic var id = 0
dynamic var name = ""
dynamic var dayIdFrom = 0
dynamic var dayIdTo = 0
let stops = List<Stops>()
override class func primaryKey() -> String? {
return "id"
}
}
class Stops: Object {
dynamic var id = 0
dynamic var busStop: BusStop?
let timetable = List<Timetable>()
override class func primaryKey() -> String? {
return "id"
}
}
class BusStop: Object {
dynamic var id = 0
dynamic var name = ""
dynamic var descript = ""
override class func primaryKey() -> String? {
return "id"
}
}
class Timetable: Object {
dynamic var hour = 0
dynamic var minute = 0
dynamic var group_index = 0
dynamic var notes = ""
}
我看到好的數據在境界:
但第二次運行後我看到Timetable
×2數據等。每次運行後的時間。
在時間表沒有主鍵(在這裏並不需要它)。爲什麼在每次更新(運行)後,我看到Timetable
中的增加數據以及如何解決我的錯誤?
因爲您要在每次運行中插入「新數據」。解決方法:如果已經添加了,請不要在每次運行中插入「新」數據。 Realm會用主鍵解決這個問題,但你說你不需要它們。 – EpicPandaForce
謝謝你的回答,但是當我添加主鍵('dynamic var id = 0'和'override class func primaryKey() - > String?{ return'id' }'時間表時,我看到結果中只有一個位置表(並且必須是1792) –
一個主鍵可以識別單個給定對象,這也意味着如果您爲所有對象返回相同的ID,那麼您讀入的所有對象將被識別爲該單個對象 – EpicPandaForce