首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XMLParser in SwiftUI Decoder.shared

XMLParser in SwiftUI Decoder.shared
EN

Stack Overflow用户
提问于 2021-05-03 17:26:56
回答 1查看 187关注 0票数 0

我有一个用SwiftyXMLParser写的解码器

我急于寻求帮助,因为我的知识不足以使用SwiftUI中的解码数据。也就是说,我想在项目的其他文件中使用结果文本。从这个例子来看,我认为你应该理解我想要什么。但这个程序不管用。指出错误或帮助编写在SwiftUI中使用它的代码

XML

代码语言:javascript
复制
<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

代码语言:javascript
复制
import SwiftyXMLParser

我很伤心,我的头在沸腾。我睡不着,只是不知道该怎么办。请帮帮我

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-03 18:43:02

如果其他一切都像您在评论中所说的那样正常工作,这可能会修复它:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67373212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档