我正在尝试将此(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
以下是问题的屏幕截图:
答案 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
}