在Xcode 6.4中,我在 Swif 1.2 中编写了一个简单的程序 使用SwiftyJSON 解析一切都很好的HAR i.e: a JSON-formatted archival format for logging HTTP。
更新到 Xcode 7 和 Swift 2.0 我还更新SwiftyJSON依赖项 ,但是当它试图通过如下紧凑语法访问JSON值时,这破坏了我的程序:
let harVersion = mJSON["log"]["version"].string
在当前更新中,此语法会出现以下运行时错误:
Could not cast value of type 'Swift.String' (0x1002bf218) to 'Swift.Int' (0x100869aa8).
我通过明确地添加.dictionary来改变/重构代码来解决:
let harVersion = mJSON.dictionary!["log"]!.dictionary!["version"]!.string
我想详细了解/了解此行为的原因,以及是否有更优雅/健壮/简洁的方式来访问JSON值。任何建议都表示赞赏。
其他信息: 的 Podfile
platform :osx, '10.11'
use_frameworks!
target 'prova-xcode7-swiftcli' do
pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git'
end
Main.swift:
var request = NSURLRequest(URL: mURL!)
var response: NSURLResponse?
var error: NSError?
var data: NSData? = try NSURLConnection.sendSynchronousRequest(request, returningResponse: &response) // , error: &error)
if let httpResponse = response as? NSHTTPURLResponse {
if data != nil {
var mJSON = JSON(data: data!)