【问题标题】:'Type of expression is ambiguous without more context' swift 3'没有更多上下文的表达类型是模棱两可的' swift 3
【发布时间】:2018-02-15 23:17:22
【问题描述】:

以下代码行:

let jsonData = JSON(data: data, options: JSONSerialization.ReadingOptions.mutableContainers, error: nil)

导致以下错误:

【问题讨论】:

  • 似乎两个框架具有相同的类型,名为JSON。我认为您使用的是SwiftyJSON,请尝试指定它:let jsonData = SwiftyJSON.JSON([...])
  • 我怀疑任何 API 在 Swift 3 中都有 error 参数。为什么要将带有 .mutableContainers 的对象分配给不可变常量?
  • 你在使用do {} catch {}try吗?

标签: json swift error-handling


【解决方案1】:

swift 3 中最好的使用 SwiftyJSON

https://cocoapods.org/pods/SwiftyJSON

之后:-

import SwiftyJSON

这段代码:-

let json = JSON(data)
let results = json["animals"].array 

【讨论】:

    【解决方案2】:

    SwiftyJSON 在 Swift 3 中的相应 API 很简单

    let jsonData = try JSON(data: data)
    

    没有error参数但是方法可以throw


    和往常一样,永远不要在 Swift 中使用 .mutableContainers。没用。

    【讨论】:

      【解决方案3】:

      参数options是一个数组。

      let jsonData = JSON(data: data, options: [JSONSerialization.ReadingOptions.mutableContainers], error: nil)

      【讨论】:

      • 参数options是一个选项集,在这种情况下应该完全省略(这不是问题的原因)。
      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 2016-12-10
      • 2015-12-16
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      相关资源
      最近更新 更多