删除元组后,方法不能成为@objc协议的成员

时间:2016-08-22 09:20:01

标签: ios swift

我正在尝试在Objective-C中使用Swift protocol

首先它是这样使用tuple

protocol Validation {
    func validate(value:String?) -> (Bool, ValidationErrorType)
}

因为元组不适合Objective-C,我决定使用Dictionary

@objc protocol Validation {
    func validate(value:String?) -> [NSNumber : ValidationErrorType]
}

结果是:

  

方法不能是@objc协议的成员,因为其结果类型无法在Objective-C中表示

你能否分享一下你对我做错了什么的看法?

1 个答案:

答案 0 :(得分:2)

该方法因ValidationErrorType而导致Dictionary,我认为这会阻止您修改协议。要解决此问题,您必须使其objc兼容,或者将返回值更改为直接NSDictionary

@objc protocol Validation {
    func validate(value:String?) -> NSDictionary
}