【问题标题】:Swift 2.0 : Json Array Parsing errorsSwift 2.0:Json 数组解析错误
【发布时间】:2015-06-23 17:22:16
【问题描述】:

在 Swift 1.2 中

https://gist.github.com/anonymous/a167148a8a6d169292ff

在 Swift 2.0 中(错误) ,所以我将代码更改如下。

let url = NSURL(string:"http://dl-8.one2up.com/onetwo/content/2015/6/15/9c3b51249fbbe20ca9d841401e276d97.php")
    let allContactsData = NSData(contentsOfURL:url!)

    do{
        var allContacts : AnyObject! = try NSJSONSerialization.JSONObjectWithData(allContactsData!, options: NSJSONReadingOptions())
    }catch{
    print(error)
    }

    if let json = allContacts as? Array<AnyObject>  {
    print(json)


        for index in 0...json.count-1 {

            let contact : AnyObject? = json[index]

            let collection = contact! as! Dictionary<String, AnyObject>

            let name : AnyObject? = collection["AnimeName"]
            let cont : AnyObject? = collection["Episodes"]

            names.append(name as! String)
            episodes.append(cont as! String)
        }

    }
    print(names)
    print(episodes)

但这不起作用。

如果让 json = allContacts as?数组

错误:使用未解析的标识符“allContacts”

【问题讨论】:

  • 您应该从要点中提取代码,这样我们就不必打开多个选项卡来理解您的问题。 :)
  • 对不起@Bloodyaugust

标签: arrays json swift xcode7 swift2


【解决方案1】:

您的 allContacts 变量是在 do 块中创建的,因此它的范围仅限于 do 块,并且不能在该块之外访问。如果您希望它在块外可访问,请在块外声明它,然后继续在块内分配它。即:

let allContactsData = NSData(contentsOfURL:url!)
var allContacts:AnyObject
do{
   allContacts = try NSJSONSerialization.JSONObjectWithData(allContactsData!, options: NSJSONReadingOptions())
}catch{
print(error)
}

【讨论】:

    【解决方案2】:
    do{
    var allContacts = try NSJSONSerialization.JSONObjectWithData(allContactsData!, options: NSJSONReadingOptions()) as! [Dictionary<String, AnyObject>]
    for contact in allContacts {
    let name : AnyObject? = contact["AnimeName"]
    let cont : AnyObject? = contact["Episodes"]
    
    names.append(name as! String)
    episodes.append(cont as! String)
    }
    }catch{
    print(error)
    }
    

    【讨论】:

    • 运行成功,输出:致命错误:在展开可选值 (lldb) 时意外发现 nil。 T^T
    • 想要记录所有联系人?
    • 抱歉,ios9 需要 TLSv1.2 SSL
    • 不知道你的意思,你能详细说明一下吗?
    • App Transport Security (ATS) 默认情况下,在 iOS 9 中,如果您尝试在应用中加载 HTTP 资源,它实际上会尝试加载 HTTPS 版本。如果 HTTPS 版本使用 Apple 认为较弱的安全性,或者服务器根本不支持 HTTPS,则请求将失败。协议传输层安全性 (TLS) 必须至少为 1.2 版。将此添加到您的 info.plist:NSAppTransportSecurity Dictionary NSAllowsArbitraryLoads Boolean YES
    猜你喜欢
    • 2016-02-24
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多