【发布时间】:2016-04-07 09:48:49
【问题描述】:
我在解析 JSON 时遇到问题。
这是 JSON 的结构:
[{"id":33,"name":"5","sort":2},{"id":34,"name":"6","sort":3},{"id":35,"name":"7","sortOrder":4}]
运行后我遇到了致命错误:
Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)” with code "fatalError("error")"
问题在于 NSBundle。我想是因为我添加了代码:
guard let path = NSBundle.mainBundle().pathForResource("sections", ofType: "json"),
let jsonData = NSData(contentsOfFile: path) else {
fatalError("error")
}
do {
if let sections = try NSJSONSerialization.JSONObjectWithData(jsonData,
options: .MutableContainers) as? [String: AnyObject] {
// work with sections
let addr = Address(dict: sections)
print("sections")
}
} catch let error as NSError {
print(error)
}
但是没有“部分”。事实上,与 JSON 的链接没有路径——只有对象(id、name、sort 等)。那么我应该如何更改 guard let path = NSBundle 来解决这个问题呢?
【问题讨论】:
-
您的应用中是否有文件
sections.json?如果没有,你在用NSBundle做什么? -
不,JSON 是从 URL 中获取的字符串。那么我应该使用什么来代替 NSBundle 呢?
-
如何获取字符串?获取它,并将其转换为 NSData(有一个方法)。
-
让 urlAsString = "xxx.xxx" 让 url = NSURL(string: urlAsString)!让 urlSession = NSURLSession.sharedSession() 让用户名 = "xxx" 让密码 = "xxx"
-
然后保存该字符串!不要打电话给
NSBundle。
标签: json swift swift2 nsbundle