Swift 3 对 getBytes 方法的更改
Posted
技术标签:
【中文标题】Swift 3 对 getBytes 方法的更改【英文标题】:Swift 3 changes for getBytes method 【发布时间】:2016-06-29 11:02:31 【问题描述】:我尝试在 swift 3 中运行以下代码
var values = [UInt8](count:data!.length, repeatedValue:0)
data!.getBytes(&values, length:data!.length)
其中数据是“数据”数据类型(NSData 根据 swift 3 准则更改为“数据”)
我无法在 Swift 3 中运行上述代码。编译器给出“参数重复值必须在参数之前”的错误。同一行代码在 Swift 2.2 中运行
解决办法是什么?
【问题讨论】:
虽然问题略有不同,但答案应该相同:***.com/questions/38090320/… 【参考方案1】:对于 Swift3,只需使用以下内容:
let array = [UInt8](yourDataObject)
就是这样,伙计们!)
【讨论】:
你如何使用这个?我正在尝试从 Objective-C 转换以下内容: int16_t value = 0; CGFloat 结果 = NAN; if (tempCharacteristic) [[tempCharacteristic value] getBytes:&value length:sizeof (value)];结果 = (CGFloat) 值 / 10.0f; // tempCharacteristic 是一个 CBCharacteristic 恐怕要达到预期的效果,您需要执行几个步骤。不幸的是,我对 CB 没有太多经验,但正如我所见,您需要 Int16 值,然后将其除以得到 Float。从我的角度来看,您可以通过以下方式达到此目的: let bytes = [UInt8](tempCharacteristic.value);让指针 = UnsafePointer这意味着在 Swift 3 中参数顺序已经颠倒了。
对于 NSData:
var values = [UInt8](repeating:0, count:data!.length)
data.getBytes(&values, length: data!.length)
对于数据:
var values = [UInt8](repeating:0, count:data!.count)
data.copyBytes(to: &values, count: data!.count)
【讨论】:
这是 Swift 3 的早期版本。对于当前的 Swift 3 和 Swift 4,你应该使用 @svd 的答案。以上是关于Swift 3 对 getBytes 方法的更改的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 Eureka Forms 更改按钮行字体颜色
给出字符串分别计算出字符串中数字大小写字母的个数。(两种方法 getBytes( ) charAt( ) )