Swift 1.2(Xcode 6.3 Beta 4)-CCCrypt无法调用错误

Swift 1.2(Xcode 6.3 Beta 4)-CCCrypt无法调用错误,xcode,swift,xcode6.3,Xcode,Swift,Xcode6.3,刚刚更新到最新的Xcode 6.3 Beta 4,我遇到了一个我似乎无法理解的错误 错误是: 无法使用类型为“(cOperation、cAlgorithm、cOptions、UnsafePointer、(Int)、nil、UnsafePointer、UInt、UnsafeMutablePointer、(Int)、inout UInt)”的参数列表调用“CCCrypt” 使用以下代码: let keyBytes = UnsafePointer<UInt8>(keyDat

刚刚更新到最新的Xcode 6.3 Beta 4,我遇到了一个我似乎无法理解的错误

错误是:

无法使用类型为“(cOperation、cAlgorithm、cOptions、UnsafePointer、(Int)、nil、UnsafePointer、UInt、UnsafeMutablePointer、(Int)、inout UInt)”的参数列表调用“CCCrypt”

使用以下代码:

let keyBytes         = UnsafePointer<UInt8>(keyData.bytes)
let keyLength        = size_t(kCCKeySizeAES128)

let dataLength    = UInt(self.length)
let dataBytes     = UnsafePointer<UInt8>(self.bytes)

let bufferData:NSMutableData! = NSMutableData(length:Int(dataLength) + kCCBlockSizeAES128)
var bufferPointer = UnsafeMutablePointer<UInt8>(bufferData.mutableBytes)
let bufferLength  = size_t(bufferData.length)

let operation: CCOperation = UInt32(kCCEncrypt)
let algoritm:  CCAlgorithm = UInt32(kCCAlgorithmAES128)
let options:   CCOptions   = UInt32(kCCOptionECBMode)
var numBytesEncrypted: UInt = 0

var cryptStatus = CCCrypt(operation,
            algoritm,
            options,
            keyBytes,
            keyLength,
            nil,
            dataBytes,
            dataLength,
            bufferPointer,
            bufferLength,
            &numBytesEncrypted)
let keyBytes=UnsafePointer(keyData.bytes)
let keyLength=大小(kCCKeySizeAES128)
让dataLength=UInt(self.length)
让dataBytes=UnsafePointer(self.bytes)
让bufferData:NSMutableData!=NSMutableData(长度:Int(数据长度)+kCCBlockSizeAES128)
var bufferPointer=unsafemeutablepointer(bufferData.mutableBytes)
让bufferLength=size\u t(bufferData.length)
let操作:cOperation=UInt32(kCCEncrypt)
let算法:CCAlgorithm=UInt32(kCCAlgorithmAES128)
let选项:CCOptions=UInt32(kCCOptionECBMode)
变量numBytesEncrypted:UInt=0
var cryptStatus=CCCrypt(操作,
算法,
选项,
密钥字节,
键长,
无
数据字节,
数据长度,
缓冲指针,
缓冲长度,
&(未加密)
这在Beta 3下运行得很好,即使在阅读了Beta 4的更改日志之后,也不确定发生了什么变化


不确定问题出在哪里,我是否应该打开Apple的bug?

摘自Xcode 6.3 beta 4发行说明:

C size_t类型族现在作为Int导入到Swift中,因为 Swift倾向于将尺寸和计数表示为有符号的数字, 即使它们是非负的。这会减少显式存储的数量 Int和UInt之间的类型转换,更好地与sizeof对齐 返回Int,并提供更安全的算术属性。(18949559)

因此,你必须更换

let dataLength    = UInt(self.length)
// ...
var numBytesEncrypted: UInt = 0


Doh,错过了那一点。一切都恢复正常了。干杯省去了我几个小时的挣扎。非常感谢。你是说Swift 1.2,对吗?对不起,是的,我会解决的。
let dataLength    = self.length // no conversion needed anymore
// ...
var numBytesEncrypted: Int = 0 // or size_t