Swift 1.2(Xcode 6.3 Beta 4)-CCCrypt无法调用错误
刚刚更新到最新的Xcode 6.3 Beta 4,我遇到了一个我似乎无法理解的错误 错误是: 无法使用类型为“(cOperation、cAlgorithm、cOptions、UnsafePointer、(Int)、nil、UnsafePointer、UInt、UnsafeMutablePointer、(Int)、inout UInt)”的参数列表调用“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
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