【发布时间】:2021-07-09 04:27:44
【问题描述】:
我最近开始学习在 Swift 中编写代码,并且一直在努力从 API 中获取数据。这是数据的样子:
{
"status":200,
"posts":[
{
"text":"djnkdnwnjdewkn",
"date":"08/07/2012"
},
{
"text":"dskndkc ksdskj n",
"date":"08/17/2012"
},
{
"text":"dkjdjincidjn",
"date":"09/07/2012"
}
]
}
这是我使用的代码:
import SwiftUI
import Foundation
import Combine
struct Post: Codable {
public var text, date: String
}
struct Feed: Codable {
public var status: Int
public var posts: [Post]
}
class FetchPosts: ObservableObject {
@Published var post = [Post]()
init() {
let url = URL(string: "api goes here")!
URLSession.shared.dataTask(with: url) {(data, response, error) in
do {
if let postData = data {
let decodedData = try JSONDecoder().decode([Post].self, from: postData)
DispatchQueue.main.async {
self.post = decodedData
}
} else {
print("No data")
}
} catch {
print("Error")
}
}.resume()
}
}
struct FeedView: View {
@ObservedObject var fetch = FetchPosts()
var body: some View {
ScrollView{
VStack {
ForEach(fetch.posts) { post in
VStack(alignment: .leading) {
Text(post.text)
Text("\(post.date)")
.font(.system(size: 13))
}
}
}
}
}
}
到目前为止,我还无法生成任何输出。我不确定问题出在我创建结构的方式上,还是我没有正确使用 JSONDecoder。任何指针将不胜感激!
【问题讨论】:
-
print("Error")=>print("Error: \(error)")这可能是您缺少的第一步。 -
见question and answer。这非常详细地介绍了如何获取 JSON 并将其转换为您可以使用的数据。
标签: json swift api swiftui fetch