向NSJSONWritingOptions类型的参数传递" no options "的语法



在Objective-C中,我编写了如下代码:

NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:someDictionary
                                                   options:0
                                                     error:&error];

我正试图在Swift中做同样的事情。在Xcode的语法检查提示下,我这样写:

var jsonError: NSError
let jsonData = NSJSONSerialization.dataWithJSONObject(someDictionary, options: NSJSONWritingOptions(), error: &jsonError)

,但这给了我一个错误:"无法找到一个超载的init接受提供的参数。"我认为问题可能是与NSJSONWritingOptions()位,我猜我只是有Swift语法错误。我试着用NSJSONWritingOptions(0)代替NSJSONWritingOptions(),得到了同样的错误;我试着用nil替换它(正如这个答案所建议的),但我得到了错误"找不到接受提供参数的__conversion过载。"

我如何表明我想要默认的JSON写入选项,无论那些可能是什么?

问题不在于NSJSONWritingOptions;你传递的错误类型应该是NSError?,而不是NSError

对于那些正在寻找Swift 4.2等效的人来说,options参数现在是可选的:

var jsonData:Data?
do {
    jsonData = try JSONSerialization.data(withJSONObject: someDictionary)
} catch let parsingError {
    print(parsingError)
}

或者如果您100%确定dataWithJSONObject将成功:

let jsonData = try! JSONSerialization.data(withJSONObject:someDictionary)

使用swift更好的方法是:

let data = try! NSJSONSerialization.dataWithJSONObject(values, options: [])

传递空数组

最新更新