0

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' の使用があいまいです」というコンパイラ エラーが発生します。

4

1 に答える 1