SwiftyJSON升级到Swift 2.0需要显式调用.dictionary getter来访问值吗?

时间:2015-09-21 18:25:28

标签: swift nsdictionary swift2 swifty-json

在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!)

0 个答案:

没有答案