【问题标题】:Swift ios alamofire put request error Thread 1: signal SIGABRT atSwift ios alamofire 提出请求错误线程 1:signal SIGABRT at
【发布时间】:2018-09-18 08:39:25
【问题描述】:

我正在尝试使用 alamofire http 请求从 api 更新 api,我的代码如下。我使用的 api https://jsonplaceholder.typicode.com/posts 。我似乎无法更新数据,我收到了一个错误,即线程 1: signal SIGABRT at line guard let json = response.result.value as! [[字符串:任何]]?否则{返回}

完整代码 func updateApi(){

        let  params  = ["userId": 1,
                        "id": 1,
                        "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
                        "body": "quia et suscipit\nsuscipit r

ecusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"] as [String: Any]

        Alamofire.request("https://jsonplaceholder.typicode.com/posts/1", method: .put, parameters: params, encoding: JSONEncoding.default, headers: nil).responseJSON { (response:DataResponse<Any>) in

            switch(response.result) {


            case .success(_):
                guard let json = response.result.value as! [[String:Any]]? else{ return}
                print("Response \(json)")


                break

            case .failure(_):
                print("Error")
                break

            }
        }

    }

【问题讨论】:

    标签: ios swift multithreading httprequest alamofire


    【解决方案1】:

    https://jsonplaceholder.typicode.com/postshttps://jsonplaceholder.typicode.com/posts/1 的结果不同。后者返回如下内容:

    {
      "userId": 1,
      "id": 1,
      "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
      "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
    }
    

    它不是 JSON 数组而是 JSON 对象。所以你的强制转换 as! [[String:Any]]? 失败了。

    将行改为:

        guard let json = response.result.value as? [String:Any] else {
            return //<- Put breakpoint here, when you find unexpected early return
        }
    

    您最好不要使用强制转换,这会使您的应用在没有太多有用信息的情况下崩溃。

    【讨论】:

    • 发送给服务器的参数是不是用id替换数据的值?
    • @DurnKurvirck,使用页面暗示了这种行为,但不够清楚。由于它是假 API,因此您不应期望在真实 API 中发现所有行为。
    • 我是一个真正的 api 怎么样,让我们​​在更新 likje test.typicode.com/test/1 时以相同的行为说?
    • 我的代码不缺吗? amalmofire 如何提出请求是否完整?
    • @DurnKurvirck,我不知道 真正的 api,所以只是最后的评论。据我检查,虽然我没有在实际项目中测试过,但我没有发现任何缺陷。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多