在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: [])
传递空数组
源