- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
var data: NSDictionary =
NSJSONSerialization.JSONObjectWithData(responseData, options:NSJSONReadingOptions.AllowFragments, error: error) as NSDictionary;
这行代码给我错误
NSError is not convertable to NSErrorPointer.
所以我想把代码改成:
var data: NSDictionary =
NSJSONSerialization.JSONObjectWithData(responseData, options:NSJSONReadingOptions.AllowFragments, error: &error) as NSDictionary;
这会将 NSError 错误转换为 NSErrorPointer。但是后来我得到一个新错误并且无法理解它:
NSError! is not a subtype of '@|value ST4'
最佳答案
自 Swift 1 以来,这些类型和方法发生了很大变化。
NS
前缀被删除这导致以下代码:
do {
let object = try JSONSerialization.jsonObject(
with: responseData,
options: .allowFragments)
if let dictionary = object as? [String:Any] {
// do something with the dictionary
}
else {
print("Response data is not a dictionary")
}
}
catch {
print("Error parsing response data: \(error)")
}
的,如果你不关心具体的解析错误:
let object = try JSONSerialization.jsonObject(
with: responseData,
options: .allowFragments)
if let dictionary = object as? [String:Any] {
// do something with the dictionary
}
else {
print("Response data is not a dictionary")
}
原始答案
你的 NSError 必须被定义为一个 Optional
因为它可以是 nil:
var error: NSError?
您还需要考虑在将返回 nil
的解析或返回数组的解析中存在的错误。为此,我们可以使用带有 as?
运算符的可选转换。
这给我们留下了完整的代码:
var possibleData = NSJSONSerialization.JSONObjectWithData(
responseData,
options:NSJSONReadingOptions.AllowFragments,
error: &error
) as? NSDictionary;
if let actualError = error {
println("An Error Occurred: \(actualError)")
}
else if let data = possibleData {
// do something with the returned data
}
关于快速编程 NSErrorPointer 错误等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24176383/
我不是在问如何将 NSErrorPointer 传递给函数,而是在问如何接收和使用它。我找不到任何关于此的文档。像这样: func doSomething(error: NSErrorPointer)
var data: NSDictionary = NSJSONSerialization.JSONObjectWithData(responseData, options:NSJSONRead
有没有办法在 Swift 中从以下 NSErrorPointer 获取可读信息? var downloadErrorPointer = NSErrorPointer(); self.rssString
我有我一直在使用 SwiftyJSON 的代码,我正在尝试使用 XCode 8.0 Beta 3 更新到 Swift 3。我遇到了编译器不喜欢参数“error: &err”的问题和以前一样。我一直在寻
在 Swift 中,符号 & 用于 inout 参数。喜欢 var value = 3 func inoutfunc(inout onlyPara: Int) { onlyPara++ } inout
尝试将 NSErrorPointer 作为参数传递给解析器函数时不断出现此错误。 函数定义为: func parseCSV (contentsOfURL: NSURL, encoding: NSStr
我正在尝试使用 ZipZap方法 ZZArchiveEntry(fileName: String!, compress: Bool, dataBlock: ((NSErrorPointer) -> N
我正在尝试按照 Apple 的 Swift 文档 (https://developer.apple.com/library/mac/documentation/swift/conceptual/Bui
我正在使用 Xcode 6 开发 Swift 1.2,但现在我已经使用 Swift 2.1 安装了 Xcode 7。尽管我的代码在 Swift 1.2 上运行良好,但 Swift 2.1 中存在许多错
我计划在 Cocoapods 上使用 AZSocketIO,以使用 socket.io。我想使用 NSErrorPointer 来获取调用 AZSocketIO#emit() 时的错误。 var em
我是一名优秀的程序员,十分优秀!