Hallo,
ich musste es mal wieder Kompliziert haben und dachte mir ich fange mal was mit SwiftUI an. Nette Sache Ansicht, konnte die UI und die CoreData Sachen relativ einfach bauen und habe eine funktionierende App mit Demodaten drin. Nun würde ich gerne "echte" Daten in CoreData schreiben.
Meine App liest per Bonjour Geräte aus die sich als Homekit Gerät melden. Diese Bonjour Daten (hostname, ipadresse) würde ich gerne in CoreData speichern.
Ich habe also in SwiftUI in der Datei [Appname]App.swift eine Klasse gemacht die grob so aussieht:
Alles anzeigen
Immer wenn ich in der Funktion updateInterface() viewContext.save() aufrufe, rennt es in den Catch Block und zeit einen "nilError" an. Was mache ich hier denn falsch?
ich musste es mal wieder Kompliziert haben und dachte mir ich fange mal was mit SwiftUI an. Nette Sache Ansicht, konnte die UI und die CoreData Sachen relativ einfach bauen und habe eine funktionierende App mit Demodaten drin. Nun würde ich gerne "echte" Daten in CoreData schreiben.
Meine App liest per Bonjour Geräte aus die sich als Homekit Gerät melden. Diese Bonjour Daten (hostname, ipadresse) würde ich gerne in CoreData speichern.
Ich habe also in SwiftUI in der Datei [Appname]App.swift eine Klasse gemacht die grob so aussieht:
Quellcode
- class DiscoverBonjour: NSObject, NetServiceBrowserDelegate, NetServiceDelegate, UIApplicationDelegate {
- @Environment(\.managedObjectContext) private var viewContext
- func updateInterface () {
- for service in self.services {
- if service.port == -1 {
- print("service \(service.name) of type \(service.type)" +
- " not yet resolved")
- service.delegate = self
- service.resolve(withTimeout:10)
- } else {
- if service.addresses!.count > 0 {
- let hostnm:String = service.hostName!
- let ipadr:String = "\(String(describing: service.addresses![0][4])).\(String(describing: service.addresses![0][5])).\(String(describing: service.addresses![0][6])).\(String(describing: service.addresses![0][7]))"
- // MARK: HIER GERÄTE IN COREDATA SCHREIBEN
- let nDevice = Device(context: self.viewContext)
- nDevice.hostname = hostnm
- nDevice.ipadress = ipadr
- nDevice.reachable = false
- do {
- try viewContext.save()
- } catch {
- print(error)
- }
- checkURL(hostname: hostnm, url: ipadr)
- }
- }
- }
- }
- }