У меня есть немного сложный вопрос. Я начинающий по-быстрому. Мой проект собирается создать приложение, чтобы показать на моих часах, сколько посетителей в бассейне. Данные поступают с URL в XML. Мне нужно проанализировать XML до двух значений и установить его в TextField. На Симуляторе все хорошо работает с Apple Watch S5 40 мм. Но на реальном устройстве с той же моделью это не работает. Это останавливается где-то в разборе. Я пытался почти все, поиск, но безрезультатно.
Мой код:
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController, XMLParserDelegate {
var nazev: String?
var parser = XMLParser()
var currentValue: String?
var registrationResult: String?
@IBOutlet weak var celkemField: WKInterfaceTextField!
@IBOutlet weak var aktualneField: WKInterfaceTextField!
@IBAction func update() {
let urlString = URL(string: "https://www.plovarnaluhacovice.cz/pocet-navstevniku.php")
nazev = "pocetAktualni"
let parser = XMLParser(contentsOf: urlString!)!
let parserDelegate = self
parser.delegate = parserDelegate
guard
parser.parse(),
let result = parserDelegate.registrationResult
else { return }
aktualneField.setText(result)
}
override func awake(withContext context: Any?) {
super.awake(withContext: context)
update()
}
override func willActivate() {
super.willActivate()
}
override func didDeactivate() {
super.didDeactivate()
}
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
if elementName == nazev {
currentValue = ""
}
}
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == nazev {
registrationResult = currentValue
currentValue = nil
}
}
func parser(_ parser: XMLParser, foundCharacters string: String) {
currentValue? += string
}
func parser(_ parser: XMLParser, parseErrorOccurred parseError: Error) {
print("failure error: ", parseError)
aktualneField.setText("chyba")
}
}