ios - JSONObjectWithData 被 Xcode 跳过

标签 ios xcode swift

以下代码应该将“组”加载到 TableView 中,但是, TableView 是空白的:

do {
    if let jsonDataArray = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions(rawValue: 0)) as? NSArray {
        for imageDataDict in jsonDataArray {
            let group = Group(
                id: imageDataDict.valueForKey("id") as! Int,
                name: imageDataDict.valueForKey("name") as! String,
                author: imageDataDict.valueForKey("author") as! Int
            )
            self.dataArray.append(group)
        }
        self.tableView.reloadData()
    }
    print("lol")
} catch {
    // report error
    displayAlertMessage("Error", alertDescription: "Oh man, there was an error!")
}

我尝试在 if let jsonDataArray... 设置断点,Xcode 停在该行。然而,当我向前走去时,它直接跳到了print(“lol”)。我很困惑为什么会发生这种情况。是因为 jsonDataArray 返回 nil 吗?

<小时/>

编辑:这是完整的功能

func loadSelfieData () {
    // Create HTTP request and set request Body
    let defaults = NSUserDefaults.standardUserDefaults()
    let user_id = defaults.integerForKey("user_id")
    let httpRequest = httpHelper.buildRequest("groups?user_id=\(user_id)", method: "GET",
        authType: HTTPRequestAuthType.HTTPTokenAuth)

    httpHelper.sendRequest(httpRequest, completion: {(data:NSData!, error:NSError!, description:NSMutableString!) in
        if error != nil {
            let errorMessage = self.httpHelper.getErrorMessage(error)
            displayAlertMessage("Error", alertDescription: errorMessage as String)

            return
        }

        var _ :NSError?

        do {
            if let jsonDataArray = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions(rawValue: 0)) as? NSArray {
                for imageDataDict in jsonDataArray {
                    let group = Group(
                        id: imageDataDict.valueForKey("id") as! Int,
                        name: imageDataDict.valueForKey("name") as! String,
                        author: imageDataDict.valueForKey("author") as! Int
                    )
                    self.dataArray.append(group)
                }
                self.tableView.reloadData()
            }
            print("lol")
        } catch {
            displayAlertMessage("Error", alertDescription: "there was an error")
        }
    })
}

最佳答案

您在调用一个执行闭包的函数时设置了一个断点,因此如果您只是尝试从那里单步执行,就会看起来好像内部没有被执行,而事实上,它是在执行的。在闭包执行中的一行处设置断点,例如在 id 行处,然后您将能够在其中查看所有数据的状态(如果有)。

关于ios - JSONObjectWithData 被 Xcode 跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33116642/

相关文章:

ios - 做手势时将 anchor 放在屏幕中央

swift - WebKitView 不遵守自动布局规则

ios - 如何判断我在 Xcode UI 测试中使用的是哪个设备?

php - 将 php 打包到 Objective C 中

ios - 如何在 ViewController 之间传递 UIButton 的框架和原点

ios - 出现时键盘高度会发生变化

ios - 类型 'PlayerConfiguration' 没有成员 'fromJson' Bitmovin iOS 集成错误

ios - 使 UITableView Header "stickier"更难下拉

Xcode 开发者文档链接悬停跳转到顶部

ios - 在使用 Xcode 10 生成 dSYM 后运行脚本阶段(构建时)