尝试从响应 Swift Alamofire 将数据保存到核心数据时崩溃

Posted

技术标签:

【中文标题】尝试从响应 Swift Alamofire 将数据保存到核心数据时崩溃【英文标题】:Crash when trying to save data to coredata from an response Swift Alamonfire 【发布时间】:2015-01-12 12:22:48 【问题描述】:

嗯,我遇到的问题真的很奇怪。

我正在上传一张图片,上传完所有图片后,我想将响应路径保存到我的 coredata 表格中。

我正在尝试使用此代码:

     Alamofire.upload(urlRequest.0, urlRequest.1)
        .progress  (bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) in
            //println("\(totalBytesWritten) / \(totalBytesExpectedToWrite)")
        
        .responseJSON  (request, response, JSON, error) in
            println("REQUEST \(request)")
            println("RESPONSE \(response)")
            println("JSON \(JSON)")
            println("ERROR \(error)")
            if let dict = JSON as? [String: AnyObject] 
                println(dict)

                cd.saveUserPictures(dict["url"] as String,id: dict["id"] as String)

            
    

此方法 cd.saveUserPictures 有效(我已经对其进行了测试,但仅在此处出现此错误。 错误本身是日志中的“llbd”错误,错误代码为:exc_bad_access code=exc_i386_BPT 来自服务器的回复是:

JSON Optional(
id = 31;
message = "messages.added_photo";
success = 1;
url = "fL0cK1/tvXtHvegqIqmmzGz.png";

) 和 println(dict)

[id:31,消息:messages.added_photo,url:tvXtHvegqIqmmzGz.png,成功:1]

我做错了什么?

【问题讨论】:

这信息太少了。什么是调用栈?是否部署了“url”和“id”字段(如果为 nil,则表示分段错误)? 字段URL和ID已部署,为你添加服务器返回 调用堆栈是怎么回事? 我没有得到堆栈跟踪只有线程 1:exc_bad_access code=exc_i386_BPT 和日志中的绿色 llbl(也尝试了断点仍然没有跟踪)胎面中的位置是:0x10973f662:nopw %cs:(%rax,%rax) 我拥有的所有信息 【参考方案1】:

键为“id”的对象是一个数字,而不是字符串。 所以dict["id"] as String 不起作用。将其替换为String(dict["id"] as Int)

【讨论】:

谢谢!没想到会这样!但现在可以了!

以上是关于尝试从响应 Swift Alamofire 将数据保存到核心数据时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Alamofire 的 Swift 3 中的 Web 服务的 PATCH API 调用中获得响应

Alamofire 自定义响应从 Alamofire v1.3 迁移到 3.0(和 Swift 2 语法)

Swift 3 Alamofire JSON 响应

如何使用序列化为数据的响应数据处理程序(通过 AlamoFire 的 Swift 3)

遍历来自 Alamofire 的 JSON 响应

Swift 3 和 Alamofire - 来自 JSON 的图像和数据