首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWIFT1.2 (Xcode 6.3 Beta 4) - CCCrypt不能调用错误

SWIFT1.2 (Xcode 6.3 Beta 4) - CCCrypt不能调用错误
EN

Stack Overflow用户
提问于 2015-03-26 22:09:51
回答 1查看 778关注 0票数 3

刚刚更新到最新的Xcode 6.3 Beta 4,我得到一个错误,我似乎不知道。

错误是:

无法使用类型的参数列表调用“CCCrypt”(CCOperation、CCAlgorithm、CCOptions、UnsafePointer、(Int)、nil、UnsafePointer、UInt、UnsafeMutablePointer、(Int)、inout UInt)‘

使用以下代码:

代码语言:javascript
复制
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吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-26 22:30:07

来自Xcode 6.3 beta 4发行说明:

C size_t系列的类型现在被导入Swift作为Int,因为Swift更喜欢大小和计数表示为符号数字,即使它们是非负的。这减少了Int和UInt之间显式类型转换的数量,更好地对齐了返回Int的大小,并提供了更安全的算术属性。(18949559)

因此,你必须替换

代码语言:javascript
复制
let dataLength    = UInt(self.length)
// ...
var numBytesEncrypted: UInt = 0

通过

代码语言:javascript
复制
let dataLength    = self.length // no conversion needed anymore
// ...
var numBytesEncrypted: Int = 0 // or size_t
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29289823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档