swift网络之json(天气预报)

swift网络编程笔记

学啥语言涉及到网络是基本上都是先来个天气预报,这里也不例外,推荐一个json数据网站,基本够用了http://www.k780.com/api

gitHub: https://github.com/CL-window/swift_weather

很丑,只是为了实现功能


主要的逻辑代码,没有什么内容,把需要的信息封装成struct,代码都加了注释

struct Weather {
    var city: String?
    var weather: String?
    var temp: String?
}

class ViewController: UIViewController {
    // init view
    @IBOutlet wea
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SwiftUI 中,可以使用 `URLSession` 和 `Codable` 协议来解析 JSON 数据。以下是一个简单的示例: 首先,定义一个结构体来表示 JSON 数据的模型: ```swift struct MyData: Codable { let name: String let age: Int } ``` 然后,使用 `URLSession` 发起网络请求,并使用 `JSONDecoder` 解码 JSON 数据: ```swift class MyViewModel: ObservableObject { @Published var myData: MyData? func fetchData() { guard let url = URL(string: "http://example.com/mydata.json") else { return } URLSession.shared.dataTask(with: url) { data, response, error in if let data = data { do { let decoder = JSONDecoder() self.myData = try decoder.decode(MyData.self, from: data) } catch let error { print(error.localizedDescription) } } }.resume() } } ``` 在视图中使用 `@ObservedObject` 来观察 ViewModel 对象,并在视图中显示数据: ```swift struct ContentView: View { @ObservedObject var viewModel = MyViewModel() var body: some View { VStack { if let myData = viewModel.myData { Text(myData.name) Text("\(myData.age)") } else { Text("Loading...") } } .onAppear { viewModel.fetchData() } } } ``` 在这个示例中,我们使用 `URLSession` 发起了一个网络请求,并使用 `JSONDecoder` 解码了 JSON 数据。然后,我们将解码后的数据存储在 `@Published` 属性中,并在视图中使用 `@ObservedObject` 来观察 ViewModel 对象的变化。最后,在视图的 `onAppear` 回调中调用 `fetchData()` 方法来获取数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值