从Swift 2迁移到Swift 3期间的奇怪问题:Initializer具有与协议所需的参数名称不同的参数名称

时间:2017-12-05 21:26:38

标签: swift swift3 swift2

我正在尝试将此(https://github.com/emilwojtaszek/leveldb-swift)项目从Swift 2迁移到Swift 3.我已经在迁移期间清除了所有100多个错误,除了以下一个:

Initializer 'init(bytes:count:)' has different argument names from those required by protocol 'KeyType' ('init(bytes:length:)')

我正在努力弄清楚它过去几个小时的原因并且不知道问题是什么,有什么想法吗?

P.S。

以下是项目的链接,其中包含当前的迁移状态:

https://drive.google.com/file/d/1pR6-NrJFYGOwYyLLg_SbYNCQ9lyF6Ljc/view?usp=sharing

以下是问题的屏幕截图:

enter image description here

1 个答案:

答案 0 :(得分:1)

在Swift 2中,我们曾经使用NSData和初始化程序init(bytes:length:)。由于Apple在Swift 3中进行了大量重命名,因此NSData称为Data,初始化程序现在称为init(bytes:count:)

因此,您需要做的就是更新KeyType协议:

public protocol KeyType {
    init(bytes: UnsafeRawPointer, count: Int) // change "length" to "count"
    func withSlice(_ f: (Slice) -> ())
    func asData() -> Data
}