我制作了一个小型测试应用程序,它通过 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/