【发布时间】:2015-09-16 21:15:58
【问题描述】:
我在 Objective-C 中有一个函数。此函数总是返回一个值,如果发生错误,则事件:
-(NSString *)test:(NSError **)error;
我在 Swift1 中重写它如下,这样我仍然可以同时获取值和错误。
override func test(error: NSErrorPointer) -> String {
var error: NSError?
let result = super.test(&error)
...
}
但现在在 swift2 中,我只能重写类似的函数
override func test() throws -> String {
}
这种情况下,如何同时获取value和error?
我这样做是因为我需要覆盖 AFNetworking 中的一个函数。需要返回值和错误。
- (id)responseObjectForResponse:(NSURLResponse *)response
data:(NSData *)data
error:(NSError *__autoreleasing *)error;
【问题讨论】:
-
你可以返回一个元组
(value, error)。 -
@zaph,谢谢您的回复。你的意思是我需要修改基类中的函数吗?
-
用 Enum 处理这种情况,它必须是这样的: enum Result
{ case Success(T) case Failure(String) } 请参阅下面的链接了解更多详情。 nomothetis.svbtle.com/error-handling-in-swift
标签: ios swift afnetworking swift2