【问题标题】:"Execution was interrupted, reasno: EXC_BAD_INSTRUCTION" error as I try to make a GET request“执行被中断,原因:EXC_BAD_INSTRUCTION”错误,因为我尝试发出 GET 请求
【发布时间】:2020-01-13 17:21:54
【问题描述】:

我正在尝试在我的操场上运行它:

func getWeatherForecast(){
let Endpoint : String =  "http://dataservice.accuweather.com/currentconditions/v1/{}"
let url = URL(string:Endpoint)

let parameters = ["apikey":"API_KEY"] as [String:Any?]
var urlRequest = URLRequest(url:url!)
do
{urlRequest.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
} catch {
    print("error")
}

let task = URLSession.shared.dataTask(with: urlRequest) {(data, response, error) in
    do {
        let json = try JSONSerialization.jsonObject(with: data!, options: [])
        print("The Response is : ",json)
    } catch {
        print("JSON error: \(error.localizedDescription)")
    }
}
task.resume()
}
getWeatherForecast()

然后我不断收到以下两个错误:

error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION 
(code=EXC_I386_INVOP, subcode=0x0).
The process has been left at the point where it was interrupted, use 
"thread return -x" to return to the state before expression 

我已经尝试了许多运行此 API 调用的变体,但我无法弄清楚我的代码有什么问题。任何人都可以在这里帮忙吗?我只是想制作一个简单的 GET,但它似乎一直告诉我“致命错误:在展开可选值时意外发现 nil”我觉得我已经正确展开。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 在with: data!:数据可以为nil,应用会崩溃。事先检查 nil 值。此外,最好先检查您是否收到错误。如果你这样做了,根本没有必要检查数据
  • @KirilS。所以我删除了强制解包并检查了 Nil,但我仍然遇到同样的错误。另外,您的意思是在尝试运行 JSON 序列化之前先检查错误。
  • 等一下……这不是一个请求它的 URL:http://dataservice.accuweather.com/currentconditions/v1/{} 不是一个有效的 URL(方括号是不允许的,如果需要,应该转义)例如http://dataservice.accuweather.com/currentconditions/v1/%7B%7D
  • 这似乎可以解决该部分的问题。但我仍然得到同样的 Nil 错误。这发生在我的 task.resume() 之后的某个地方。任何想法?我是否错误地处理了数据?编辑:当我删除 !来自data,它要求我添加!
  • 你总是可以做到guard let data = data else { // data is nil, do something else }

标签: swift xcode get httprequest urlsession


【解决方案1】:

您正在调用被 Apple 阻止的“http”网址,因为它不安全。您必须在 plist 文件中使用“https”或临时允许。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    相关资源
    最近更新 更多