试用 2.1.1

试用 2.1.1

测试已测试
语言语言 Obj-CObjective C
许可 未提供声明
发布最后发布2019年4月

James Richard维护。



试用 2.1.1

  • Weebly

试用

试用允许您使用 Swift 错误处理来处理 Objective-C 的异常。Objective-C 中有许多 API 可以抛出在 Swift 中无法处理的异常。例如,NSKeyedUnarchiver 如果尝试将值转换为不兼容的类型,会抛出异常。

以下示例中,我们将解密一个由 `NSKeyedArchiver` 编写的 `int`。如果这些数据实际编码为 `float`,则 `decodeIntForKey(_:)` 方法通常会抛出异常,但使用 Trust 它抛出了一个 Swift 错误,并且我们可以优雅地处理它。该方法将以更 Swift 友好的方式处理错误,通过返回 `nil`。

func decodeCountFromData(data: Data) -> Int? {
	let archiver = NSKeyedUnarchiver(forReadingWith: data)
	defer { archiver.finishDecoding() }
	
	do {
	    try trap {
	    	return archiver.decodeInteger(forKey: "count")
	    }
	} catch let error as NSError {
	    if let exception = error.userInfo[tryExceptionErrorKey] as? NSException {
	        dlog("ERROR: Exception decoding count: \(exception)")
	    } else {
	        dlog("ERROR: Unknown decoding error: \(error)")
	    }
	
	    return nil
	}
}

贡献者

该概念和原始实现由 Jacob Berkman 完成。