为什么Swift编译器没有检测到协议的属性

时间:2016-05-30 23:30:27

标签: swift protocols

我使用的NSOperation符合具有results属性的SomeProtocol

let op : NSOperation, SomeProtocol = ...

op.completionBlock = {
    print(op.results)
}

我收到以下错误:

Value of type 'NSOperation' has no member 'results'

我知道我可以将NSOperation子类化以获得预期的行为,但是我可以使用协议实现我想要的吗?

1 个答案:

答案 0 :(得分:3)

该代码甚至不应该那么远......与Objective-C不同,Swift不允许将变量指定为具体类型和协议的组合。您只能将变量声明为特定类型,特定协议或协议组合,例如

let op : protocol<SomeProtocol, AnotherProtocol> = ...

但目前无法将变量声明为特定类型NSOperation且符合协议SomeProtocol