一尘不染

快速符合多种协议的类型

swift

我有一个符合多种协议的Objective-C变量。

id <NSObject, NSCopying, NSCoding> identityToken;

我将如何在Swift中代表这种类型?


阅读 203

收藏
2020-07-07

共1个答案

一尘不染

这应该工作:

var identityToken: NSObjectProtocol & NSCopying & NSCoding

注意,必须快速使用NSObjectProtocol而不是NSObject。

以下是一些其他示例:

符合多种协议的对象数组:

var array: [NSObjectProtocol & NSCopying & NSCoding]

具有符合多种协议的参数的功能:

func foo(param: NSObjectProtocol & NSCopying & NSCoding) {

}

对于3.1之前的Swift版本,请使用:

var identityToken: (NSObjectProtocol, NSCopying, NSCoding)
2020-07-07