RealmSwiftでローカルDBの配列をList表示しようとするとアプリが落ちる
電車遅延情報のAPIを叩いて、RealmSwiftを用いて一旦ローカルDBに落とし配列をList表示したいのですが、下記のエラーが出てしまいうまく動きません。
libc++abi.dylib: terminating with uncaught exception of type NSException(lldb)
ContentView→SubContentViewへ画面遷移させようとするとエラーが出てアプリが落ちてしまいます。
tabはおまけで機能はありません。
Swift初心者で基礎的なところができていないかもしれませんがよろしくお願いいたします。
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView{
TabView{
NavigationLink(destination: SubContentView()){
Text("No.1")
}
.tabItem{
Image(systemName: "1.circle")
Text("First")
}
Text("No.2")
.tabItem{
Image(systemName: "2.circle")
Text("Second")
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import SwiftUI
struct SubContentView: View {
@State var networkManager = NetworkManager()
var body: some View {
List(self.networkManager.model, id: \.self) { model in
HStack{
Text(model.name)
.font(.system(size: 20))
Text(model.company)
}
}
.navigationBarTitle("遅延中の路線")
}
}
struct SubContentView_Previews: PreviewProvider {
static var previews: some View {
SubContentView()
}
}
import SwiftUI
import RealmSwift
class Model: Object, Codable{
@objc dynamic var name: String = ""
@objc dynamic var company: String = ""
@objc dynamic var lastupdate_gmt: Int64 = 0
override public static func primaryKey() -> String? {
return "name"
}
}
class NetworkManager{
var model: [Model] = []
init() {
guard let url = URL(string: "https://tetsudo.rti-giken.jp/free/delay.json") else { return }
URLSession.shared.dataTask(with: url) { (data, _, _) in
guard let data = data else { return }
let task = try! JSONDecoder().decode([Model].self, from: data)
let realm = try! Realm()
try! realm.write {
realm.deleteAll()
realm.add(task)
}
let result = Array(realm.objects(Model.self))
self.model = result
}.resume()
}
}