在swift中使用初始化程序实现目标C协议

时间:2016-09-14 00:31:15

标签: objective-c swift

我有这个目标-C协议

@protocol Parcelable <NSObject>
@required
- (instancetype)initWithData:(NSDictionary *)data;
@end

我似乎无法在Swift类中找到实现的方法。我试过了

required init(data: NSDictionary) {
    super.init()
    ... //do something with data
}

甚至

func initWithData(data: NSDictionary) -> Self {
    ... //do something with data
}

但它一直说该课程不符合协议&#39; Parcelable&#39;

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

啊哈!实现该协议的正确方法是

required init(data: [NSObject : AnyObject]) {
    super.init()
    ... //do something with data
}

Swift将NSDictionary翻译为[NSObject : AnyObject]并且无法识别NSDictionary本身(?)