ios - 线程 1 : EXC_BAD_INSTRUCTIONS when parsing rest API http response on class

标签 ios objective-c json swift

我制作了一个小型测试应用程序,它通过 rest api 从服务器获取用户数据。服务器将数据响应为 JSON 数据。问题是,当我试图在 User 类中解析该数据时,我的应用程序因执行而崩溃:

Thread 1: EXC_BAD_INSTRUCTIONS

当我在 viewcontroller 中解析 json 数据时,它起作用了。 以下是崩溃代码的预览:

ViewController.swift:

func connectionDidFinishLoading(connection: NSURLConnection!) {
    var dataAsString: String = NSString(data: self.data, encoding: NSUTF8StringEncoding)
    var err: NSError
    var jsonResult: NSDictionary = NSJSONSerialization.JSONObjectWithData(data, 
                                   options: NSJSONReadingOptions.MutableContainers,
                                   error: nil) as NSDictionary
    var results: NSDictionary    = jsonResult["results"] as NSDictionary
    var userData: NSDictionary   = results["user"] as NSDictionary

    let user: User = User(initFromJSONData: userData)

用户.swift:

init(initFromJSONData user: NSDictionary) {
    self.id = user["id"] as Int

它崩溃到用户 ["id"] 作为 Int。当我在 ViewController 上做同样的事情时,它起作用了。有人能解释为什么它会这样工作吗?应该怎么做?

谢谢大家!

最佳答案

NSNumber 不能直接转换为 Int。试试这个:

let id = user["id"] as NSNumber
self.id = id.integerValue

关于ios - 线程 1 : EXC_BAD_INSTRUCTIONS when parsing rest API http response on class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440621/

相关文章:

ios - 如何快速触发按钮选择而不是单元格选择

java - 与 Objective-C block 相比,Java 匿名类的局限性

java - Gson反序列化: How to distinguish between fields that are missing and fields that are explicitly set to null?

C# 使用 HttpWebResponse 获取 JSON 编码的字典以及错误的状态代码

javascript - JSON.stringify 丢失属性 - 记录和保存所有 javascript 事件

ios - 如何使用 GLKMathUnproject

ios - 如何解决xcode 5 中的apple LLVM 5.0 错误?

ios - 类型 "MyClass"不符合协议(protocol) "Collection_Delegate"

iphone - 如何将模态视图添加到当前 View Controller 上?

ios - 带有图像的 CollectionView 网格。图片不适合网格