Как передать никакие параметры NSJSONSerialization.JSONObjectWithData в Swift

Я хочу передать никакие параметры при десериализации JSON в Swift (2.0). Я изначально пробовал:

NSJSONSerialization.JSONObjectWithData(data, options: nil)

Но это не компилируется, я получаю ошибку:

Тип NSJSONReadingOptions не соответствует протоколу NilLiteralConvertible

В перечислении NSJSONReadingOptions нет опции "Нет", поэтому что мне делать, если я не хочу ни одного из этих параметров?

Ответы

Ответ 1

В swift 2 вы должны использовать пустой массив [] для обозначения no options:

NSJSONSerialization.JSONObjectWithData(data, options: [])

Ответ 2

TL;DR; Swift 3: просто пропустите параметр param, и все будет хорошо.

JSONSerialization.jsonObject(with: data)

Пояснение:

в swift 3, вызов функции

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

ReadOptions - это опция, заголовок для протокола Option Set имеет

/// When you need to create an instance of an option set, assign one of the
/// type 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)

Ответ 3

Вы также можете использовать пустой конструктор для объекта NSJSONReadingOptions.

NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())