我有一个用SwiftyXMLParser写的解码器
我急于寻求帮助,因为我的知识不足以使用SwiftUI中的解码数据。也就是说,我想在项目的其他文件中使用结果文本。从这个例子来看,我认为你应该理解我想要什么。但这个程序不管用。指出错误或帮助编写在SwiftUI中使用它的代码
XML
<horo>
<date yesterday="02.05.2021" today="03.05.2021" tomorrow="04.05.2021" tomorrow02="05.05.2021"/>
<aries>
<yesterday> Сегодня вам, возможно, будет трудно собраться с мыслями и еще труднее решиться на какие-либо активные действия. Не стоит стараться пересилить упрямый организм, он таких вещей не прощает. </yesterday>
<today> Сегодня вы будете способны превратить самые тривиальные слова в изысканный сонет. Если вам удастся еще и слушателя найти соответствующего - проблема "где и с кем провести субботний вечер" будет решена. Возможно, навсегда. </today>
<tomorrow> Сегодня вам предстоит день, полный борьбы с непониманием в как рядах близких вам людей так и среди прочих. Возможно, вы его так и не победите. </tomorrow>
<tomorrow02> Сила вашего обаяния сегодня во многом будет зависеть от изысканности вашей речи. С помощью пары-другой изящный оборотов вы сможете покорить чье-то сердце. </tomorrow02>
</aries>
</horo>HoroscopeDecoder.swift
import SwiftyXMLParser我很伤心,我的头在沸腾。我睡不着,只是不知道该怎么办。请帮帮我
发布于 2021-05-03 18:43:02
如果其他一切都像您在评论中所说的那样正常工作,这可能会修复它:
class ViewModel : ObservableObject {
@Published var text = ""
func updateText() {
HoroscopeDecoder.shared.run(sign: .scorpio, period: .today) { prediction in
DispatchQueue.main.async {
self.text = prediction
}
}
}
}
struct ContentView: View {
@StateObject var viewModel = ViewModel()
var body: some View {
Text(viewModel.text)
.padding()
.onAppear {
viewModel.updateText()
}
}
}通常,您不希望在View代码中执行异步任务,特别是在可能多次调用的init中。相反,在onAppear中调用它。
另外,您的URL任务将返回一个不同的线程--一旦您准备好更新UI,就需要使用DispatchQueue.main.async。
https://stackoverflow.com/questions/67373212
复制相似问题