Ответ 1
В swift 2 вы должны использовать пустой массив []
для обозначения no options
:
NSJSONSerialization.JSONObjectWithData(data, options: [])
Я хочу передать никакие параметры при десериализации JSON в Swift (2.0). Я изначально пробовал:
NSJSONSerialization.JSONObjectWithData(data, options: nil)
Но это не компилируется, я получаю ошибку:
Тип NSJSONReadingOptions не соответствует протоколу NilLiteralConvertible
В перечислении NSJSONReadingOptions нет опции "Нет", поэтому что мне делать, если я не хочу ни одного из этих параметров?
В swift 2 вы должны использовать пустой массив []
для обозначения no options
:
NSJSONSerialization.JSONObjectWithData(data, options: [])
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)
Вы также можете использовать пустой конструктор для объекта NSJSONReadingOptions
.
NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())