我希望有人能够帮助我找出我正在尝试在 Swift 2.0 中编写(或学习编写)的应用程序时遇到的麻烦。这以前在 Swift 1.2 中有效,但在必要的转换之后,我一直面临错误;

无法使用类型为 '(contenOfURL: NSURL, options: NSDataReadingOptions, error:nil)' 的参数列表调用类型为 'NSData' 的初始化程序

这是我正在使用的代码,略有删节;

...

class func fetchMinionData() -> [Minion] {
    let myURL = "https://myurl/test.json"

    let dataURL = NSURL(string: myURL)

    let data = NSData(contentsOfURL: dataURL!, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: nil)
    //THIS IS THE LINE THAT THROWS THE ERROR

    let minionJSON = JSON(data)

    var minions = [Minion]()

    for (_ , minionDictionary) in minionJSON {
        minions.append(Minion(minionDetails: minionDictionary))
    }

    return minions
}

...

请注意,我计划在下载数据后使用 SwiftyJSON 库进一步解析数据。我在网上无休止地搜索,但我似乎无法弄清楚这一点!谢谢!

最佳答案

如果您使用 Swift 2,则不应传递最后一个参数“错误”。而是尝试围绕 NSData 初始化。如果需要在外部访问数据,则将 init 结果放入 var 并转换为 let 修改代码

var optData:NSData? = nil
  do {
    optData = try NSData(contentsOfURL: dataURL!, options: NSDataReadingOptions.DataReadingMappedIfSafe)
  }
  catch {
    print("Handle \(error) here")
  }

  if let data = optData {
    // Convert data to JSON here
  }

关于nsdata - 问题让 NSData 请求在 Swift 2.0 中工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32127228/

10-14 11:47
查看更多