xcode 在SwiftUI中使用API:无法在范围中找到错误

u5i3ibmn  于 2023-05-30  发布在  Swift
关注(0)|答案(2)|浏览(138)

我一直在使用Youtube来帮助我学习如何使用API和使用SwiftUI转换为JSON。这是我第一次真正使用它,可以使用帮助,如果可能的话请...这就是我的代码所显示的:“在作用域中找不到错误”
这是到目前为止的代码:

import SwiftUI

class ViewModel: ObservableObject{
    
    func fetch() {
        guard let url = URL(string: "http://www.themealdb.com/api/json/v1/1/search.php?s=Arrabiata") else {
            
            return
        }
        
    }
    let task = URLSession.shared.dataTask(with: url) { data;
        error; in
        guard let data = data, error == nil else {
            return
        }
         // Convert to JSON
        
        
    }
}

我很抱歉,我对这一切都很陌生。
谢谢你!
我试着用YouTube寻求帮助。

tquggr8v

tquggr8v1#

有两个(实际上是三个)严重的错误。

  • let task上面的右大括号是错误的,它必须在末尾。
  • dataTask的闭包有三个参数,用逗号分隔

处理/打印error是一个很好的实践。如果没有错误,则data有一个值,可以强制解包。

class ViewModel: ObservableObject {
    
    func fetch() {
        guard let url = URL(string: "http://www.themealdb.com/api/json/v1/1/search.php?s=Arrabiata") else {
            return
        }
        
        let task = URLSession.shared.dataTask(with: url) { data, response, error in
            if let error {
                print(error)
                return
            }
            
            // Convert to JSON
            // It's guaranteed that data has a value
            
        }
    }
}

旁注:
而不是YouTube,在那里 * 任何人 * 都可以发布 * 任何东西 * 阅读/观看像Hacking With Swift这样的严肃教程。

mo49yndu

mo49yndu2#

这可能对你有帮助。

import SwiftUI

class ViewModel: ObservableObject {
    
    func fetch() {
        guard let url = URL(string: "http://www.themealdb.com/api/json/v1/1/search.php?s=Arrabiata") else {
            return
        }
        
        let task = URLSession.shared.dataTask(with: url) { data, response, error in
            guard let data = data, error == nil else {
                return
            }
            
            // Convert to JSON
            do {
                let json = try JSONSerialization.jsonObject(with: data, options: [])
                // Process the JSON data
                
            } catch {
                // Handle JSON parsing error
            }
        }
        
        task.resume()
    }
}

相关问题