我想知道为什么会出现此错误,我很好奇这是否是因为我在同一文件夹中使用类和结构?
npm update
答案 0 :(得分:0)
问题在于以下特定行:
let task = URLSession.shared.dataTask(with: URL(string: url)!) { (data, response, error) in
您试图直接在类内运行代码块,而您不能这样做,该代码需要包含在代码块内,例如方法调用。
我建议将这种逻辑包装在viewDidLoad()
方法中
override func viewDidLoad() {
super.viewDidLoad()
fetchBlog()
}
func fetchBlog() {
let task = URLSession.shared.dataTask(with: URL(string: url)!) { (data, response, error) in
guard let data = data else {
print("Error: No data to decode")
return
}
guard let blog = try? JSONDecoder().decode(Blog.self, from: data) else {
print("Error: Couldn't decode data into Blog")
return
}
print("blog title: \(blog.title)")
print("blog home: \(blog.homepageURL)")
print("articles:")
for article in blog.articles {
print("- \(article.title)")
}
}
}
您还可以从其他地方(例如init,viewWillAppear或其他函数等)调用此函数。
注意:除非确实需要,否则不要在Swift中使用NSLog之类的NS类,几乎总是一个Swift版本