刚刚更新到最新的Xcode 6.3 Beta 4,我得到一个错误,我似乎不知道。
错误是:
无法使用类型的参数列表调用“CCCrypt”(CCOperation、CCAlgorithm、CCOptions、UnsafePointer、(Int)、nil、UnsafePointer、UInt、UnsafeMutablePointer、(Int)、inout UInt)‘
使用以下代码:
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)这是伟大的工作在Beta 3和不确定什么已经改变,甚至在阅读了Beta 4更改日志。
不知道是什么问题,我应该用苹果打开一个bug吗?
发布于 2015-03-26 22:30:07
来自Xcode 6.3 beta 4发行说明:
C size_t系列的类型现在被导入Swift作为Int,因为Swift更喜欢大小和计数表示为符号数字,即使它们是非负的。这减少了Int和UInt之间显式类型转换的数量,更好地对齐了返回Int的大小,并提供了更安全的算术属性。(18949559)
因此,你必须替换
let dataLength = UInt(self.length)
// ...
var numBytesEncrypted: UInt = 0通过
let dataLength = self.length // no conversion needed anymore
// ...
var numBytesEncrypted: Int = 0 // or size_thttps://stackoverflow.com/questions/29289823
复制相似问题