微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swift返回let值

如何解决Swift返回let值

所以我要做的就是能够将var / let值返回到SwiftUI中的视图。

我目前可以对JSON数据执行此操作。但以下内容不是JSON。这只是一个传递并返回的字符串。

Nowplaying.swift

let Nowplaying: String

class Api {
    func NowPlaying(completion: @escaping ([Nowplaying]) -> ()) {
          
                   let Nowplaying = "string"
                   dispatchQueue.main.async{
                       // The array is stored under station Now
                       completion(Nowplaying)
                   }
                   
    
           .resume()
           }
}

podcastView.swift

import SwiftUI

struct podcasts: View {
    
     let post: Program
    
    @State var Nowplaying: [Nowplaying] = []
    
    var body: some View {
      
     
            ZStack {
                  Color.blue
               //   Text(post.url)
                  Text(Nowplaying)
               
            }
            .onAppear(
            //RUN CODE TO Fetch podcast episodes.
                Api().NowPlaying { (Nowplaying) in
                               self.Nowplaying = Nowplaying
                }
            )
            .navigationBarTitle(Text(post.title),displayMode: .inline)
            .navigationBarHidden(false)
            .navigationBarBackButtonHidden(false)
           
      
        
        
    
    }
        
}


现在我要猜测这不起作用的原因是由于这一部分

completion: @escaping ([Nowplaying]) 

不是JSON返回的字符串。所以问题是,如果不返回JSON字符串而是返回文本字符串,我该怎么办?

您还如何将数据发送到此功能

例如在我将要拥有的节点中

 func NowPlaying(incomingData,completion: @escaping ([Nowplaying]) -> ()) {

                  print(incomingData)

                   let Nowplaying = "string"
                   dispatchQueue.main.async{
                       // The array is stored under station Now
                       completion(Nowplaying)
                   }


           .resume()
           }
}

解决方法

您的完成工作需要定义要接受参数的类型,而不是变量。

func nowPlaying(completion: @escaping (String) -> ()) {
    // ...
}

您还需要更改视图

@State var nowplaying: String = ""

(它不应该是数组,因为您在Text视图中使用它。)

let nowplaying: String中的第一个nowplaying.swift也没有用。您应该删除它。

修改

一开始没有看到,但是:

.resume()函数中的

nowPlaying(completion:)与此处无关。只需将其删除。

在您的Podcasts视图中,onAppear是错误的语法。实际上,它期望关闭,因此您应该使用{ }而不是( )

.onAppear {
    // ...
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。