2016-09-15 6 views
12

私はスウィフト2.2で書かれた次のコードを持っている:Swift 3でUnsafeMutablePointerを使用するには?

let keyData = NSMutableData(length: 64)! 
SecRandomCopyBytes(kSecRandomDefault, 64, UnsafeMutablePointer<UInt8>(keyData.mutableBytes)) 

XCodeの8つのハイライトその二行目をして

が 引数リストで「_> UnsafeMutablePointer <」タイプのための初期化子を呼び出すことはできませんと主張していますタイプ '(UnsafeMutableRawPointer)'

私にこのことを伝えていただきありがとうございますが、私は非常にUnsafeMutablを変更する方法を理解していませんeRawPointerを受け入れる。

誰もこのコードをSwift 3に変換する方法を知っていますか?私はあなたがスウィフト3.

var keyData = Data(count: 64) 
let result = keyData.withUnsafeMutableBytes {mutableBytes in 
    SecRandomCopyBytes(kSecRandomDefault, keyData.count, mutableBytes) 
} 

withUnsafeMutableBytes(_:)DataはなくNSDataで作業することをお勧めします

+0

私もこの問題に遭遇しました。あなたはまだ解決策を見つけましたか? –

+0

重複を避けるために、これは私の質問です、あなたと非常によく似ています。誰かが自分の質問に答えてくれることを願っています。 'タイプ 'UnsafePointer <_>'の初期化子を '(UnsafeMutableRawPointer?)'のタイプの引数リストで呼び出すことはできません。 –

+0

OOperの答え以外はありません。 NSMutableDataを使用する必要がありますか? – AppreciateIt

答えて

16

はジェネリックメソッドとして宣言されているので、このような単純な場合には、あなたは、要素の型を指定せずに使用することができます。

+0

をご覧ください。https://stackoverflow.com/questions/45181614/cannot-invoke-initializer-for-type-unsafepointer-with-an-argument-list-of-typ –

関連する問題