Swift 3.0 にアップデートする際にいくつかの問題があります。次のコードがあります。
// Retrieve the Device GUID
let device = UIDevice.current
let uuid = device.identifierForVendor
let mutableData = NSMutableData(length: 16)
(uuid! as NSUUID).getBytes(UnsafeMutablePointer(mutableData!.mutableBytes))
// Verify the hash
var hash = Array<UInt8>(repeating: 0, count: 20)
var ctx = SHA_CTX()
SHA1_Init(&ctx)
SHA1_Update(&ctx, mutableData!.bytes, mutableData!.length)
SHA1_Update(&ctx, (opaqueData1! as NSData).bytes, opaqueData1!.count)
SHA1_Update(&ctx, (bundleIdData1! as NSData).bytes, bundleIdData1!.count)
SHA1_Final(&hash, &ctx)
let computedHashData1 = Data(bytes: UnsafePointer(&hash), count: 20)
私の最初の問題は、次のコード行にあります。
(uuid! as NSUUID).getBytes(UnsafeMutablePointer(mutableData!.mutableBytes))
mutableData!.mutableBytes は UnsafeMutableRawPointer を返すようになり、コンパイラは「タイプ '(UnsafeMutableRawPointer)' の引数でタイプ 'UnsafeMutablePointer<_> の初期化子を呼び出せません」と不平を言います。失敗。
私の2番目の問題は、次の行にあります。
let computedHashData1 = Data(bytes: UnsafePointer(&hash), count: 20)
この行により、「'init' の使用があいまいです」というコンパイラ エラーが発生します。