swift2 从Swift 2迁移到Swift 3期间出现奇怪问题:初始值设定项的参数名称与协议所需的参数名称不同

h7appiyu  于 2022-11-06  发布在  Swift
关注(0)|答案(1)|浏览(195)

我正在尝试将这个(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:)')

我在过去的几个小时里一直在努力找出它的原因,却没有得到任何问题的线索,有什么想法吗?
附言
以下是指向当前迁移状态的项目的链接:
https://drive.google.com/file/d/1pR6-NrJFYGOwYyLLg_SbYNCQ9lyF6Ljc/view?usp=sharing
以下是该问题的屏幕截图:

5vf7fwbs

5vf7fwbs1#

在Swift 2中,我们使用了带有初始化器init(bytes:length:)的NSData。由于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
}

相关问题