1. ホーム
  2. swift

[解決済み] swiftで複数のプロトコルに準拠した型

2023-06-14 09:09:35

質問

複数のプロトコルに準拠したObjective-Cの変数があります。

id <NSObject, NSCopying, NSCoding> identityToken; 

この型をSwiftで表現するとどうなるでしょうか?

どのように解決するのですか?

これは動作するはずです。

var identityToken: NSObjectProtocol & NSCopying & NSCoding 

NSObjectの代わりにNSObjectProtocolを使用しなければならないことに注意してください。

以下は追加例です。

複数のプロトコルに準拠したオブジェクトの配列。

var array: [NSObjectProtocol & NSCopying & NSCoding]

複数のプロトコルに準拠したパラメータを持つ関数。

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

}

Swiftのバージョンが3.1より前の場合、使用します。

var identityToken: (NSObjectProtocol, NSCopying, NSCoding)