Swift(2.0)でJSONを逆シリアル化するときにオプションを渡さないようにしたい。最初に試したのは:
NSJSONSerialization.JSONObjectWithData(data, options: nil)
しかし、それはコンパイルされません、私はエラーを受け取ります:
タイプNSJSONReadingOptionsはプロトコルNilLiteralConvertibleに準拠していません
列挙型 NSJSONReadingOptions には「なし」オプションがないので、これらのオプションが不要な場合はどうすればよいですか?
Swift 2)では、空の配列[]
を使用してno options
を示す必要があります。
NSJSONSerialization.JSONObjectWithData(data, options: [])
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)
NSJSONReadingOptions
オブジェクトに空のコンストラクターを使用することもできます。
NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())