web-dev-qa-db-ja.com

SwiftのNSJSONSerialization.JSONObjectWithDataにオプションを渡さない方法

Swift(2.0)でJSONを逆シリアル化するときにオプションを渡さないようにしたい。最初に試したのは:

NSJSONSerialization.JSONObjectWithData(data, options: nil)

しかし、それはコンパイルされません、私はエラーを受け取ります:

タイプNSJSONReadingOptionsはプロトコルNilLiteralConvertibleに準拠していません

列挙型 NSJSONReadingOptions には「なし」オプションがないので、これらのオプションが不要な場合はどうすればよいですか?

14
markdb314

Swift 2)では、空の配列[]を使用してno optionsを示す必要があります。

NSJSONSerialization.JSONObjectWithData(data, options: [])
19
luk2302

tldr; Swift 3:オプションパラメータをスキップするだけで、すべてうまくいきます。

JSONSerialization.jsonObject(with: data)

説明:

Swift 3では、関数呼び出しは

class func jsonObject(with data: Data, options opt: JSONSerialization.ReadingOptions = []) throws -> AnyObject

ReadingOptionsはオプションセットであり、オプションセットプロトコルのヘッダーには

/// When you need to create an instance of an option set, assign one of the
/// type's static members to your variable or constant. Alternately, to create
/// an option set instance with multiple members, assign an array literal with
/// multiple static members of the option set. To create an empty instance,
/// assign an empty array literal to your variable.
///
///     let singleOption: ShippingOptions = .priority
///     let multipleOptions: ShippingOptions = [.nextDay, .secondDay, .priority]
///     let noOptions: ShippingOptions = []

オプションセットのドキュメントはこちら

つまり、電話をかけることができます

JSONSerialization.jsonObject(with: data, options: [])

ただし、オプションにはすでに関数定義で定義されているデフォルトの[]があるため、完全にスキップして呼び出すことができます

JSONSerialization.jsonObject(with: data)
8
Confused Vorlon

NSJSONReadingOptionsオブジェクトに空のコンストラクターを使用することもできます。

NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())
1
Leo Landau