2017-12-05 8 views
1

この(https://github.com/emilwojtaszek/leveldb-swift)プロジェクトをSwift 2からSwift 3に移行しようとしています。この以下のものを除いて、移行時:Swift 2からSwift 3への移行中の奇妙な問題:Initializerのプロトコル名と異なる引数名があります

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

は、問題のスクリーンショットです:

我々はNSDataのを持っていたスウィフト2では

enter image description here

答えて

1

初期化子はinit(bytes:length:)です。 AppleはSwift 3で多くの名前を変更しているので、NSDataはDataと呼ばれ、初期化子はinit(bytes:count:)となります。

だから、あなたがする必要があるすべてはあなたのキータイプのプロトコルを更新することです:

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

おかげで、それは1つのinobviousエラーでした! – Lu4

+0

あなたは大歓迎です!答えを選択すると感謝します。 –

+0

もちろん!なぜ私が最初にやったのかわからない、btw、この旅の続きはこちらhttps://stackoverflow.com/questions/47677187/import-third-party-c-library-into-swift-causes-error -in-modular-heaを含む – Lu4

関連する問題