Ios 警告消息:如何删除';具有不可分配的字节';已弃用和';不安全字节';不赞成吗?

Ios 警告消息:如何删除';具有不可分配的字节';已弃用和';不安全字节';不赞成吗?,ios,swift,warnings,Ios,Swift,Warnings,我正在将以前版本的Swift代码更改为Swift5。并且有一条警告消息表明此代码不可用。我想更改此代码,但不知道如何更改 警告代码 func-pbkdf2(hash:ccpbkdf算法,密码:字符串,salt:Data,keyByteCount:Int,round:Int)->数据?{ 让passwordData=password.data(使用:.utf8)! 让derivedKeyData=数据(计数:keyByteCount) var localVariables=derivedKeyDa

我正在将以前版本的Swift代码更改为Swift5。并且有一条警告消息表明此代码不可用。我想更改此代码,但不知道如何更改

警告代码

func-pbkdf2(hash:ccpbkdf算法,密码:字符串,salt:Data,keyByteCount:Int,round:Int)->数据?{
让passwordData=password.data(使用:.utf8)!
让derivedKeyData=数据(计数:keyByteCount)
var localVariables=derivedKeyData
让derivationStatus=localVariables.withUnsafeMutableBytes{derivedKeyBytes in
salt.withUnsafeBytes{saltBytes in
CCKeyDerivationPBKDF(CCPBKDF算法(kCCPBKDF2),
密码,passwordData.count,saltBytes,salt.count,
哈希,UInt32(圆形),
derivedKeyBytes,derivedKeyData.count)
}
}
如果(派生状态!=0){
日志错误(“\(派生状态)”)
返回零;
}
返回本地变量
}
警告消息:

不推荐使用“withUnsafeMutableBytes”:使用
withUnsafeMutableBytes(:(UnsafeMutableRawBufferPointer)抛出
->R)改为重新旋转->R

不推荐使用“withUnsafeBytes”:使用
withUnsafeBytes(:(UnsafeRawBufferPointer)抛出->R)重试
->R

如何更改此代码以删除警告消息

我尝试了很多东西,但错误变了。
func-pbkdf2(hash:ccpbkdf算法,密码:字符串,salt:Data,keyByteCount:Int,round:Int)->数据?{
让passwordData=password.data(使用:.utf8)!
让derivedKeyData=数据(计数:keyByteCount)
var localVariables=derivedKeyData
让derivationStatus=localVariables.withUnsafeMutableBytes{derivedKeyBytes in
let Mutable:UnsafeMutableRawPointer?=derivedKeyBytes.baseAddress
salt.withUnsafeBytes{saltBytes in
let raw:UnsafeRawPointer?=saltBytes.baseAddress
CCKeyDerivationPBKDF(CCPBKDF算法(kCCPBKDF2),
密码,passwordData.count,原始?.assumingmemorybind(to:UInt8.self),salt.count,
哈希,UInt32(圆形),
可变?.AssumingMemoryBind(to:UInt8.self),derivedKeyData.count)
}
}
如果(派生状态!=0){
日志错误(“\(派生状态)”)
返回零;
}
返回本地变量
}
错误消息:

二进制运算符“!=”无法应用于“()”和“Int”类型的操作数

警告消息:

推断为具有类型“()”的常量“派生状态”,可能是 意料之外


我改变它对吗?我想我需要更正这个比较,我应该如何更正它?

我在@MartinR的帮助下解决了这个问题。那@MartinR建议作为一个答案

saltBytes
替换为
saltBytes.bindMemory(to:UInt8.self).baseAddress
,对于
derivedKeyBytes
也是如此

代码成功,所有警告均丢失

func-pbkdf2(hash:ccpbkdf算法,密码:字符串,salt:Data,keyByteCount:Int,round:Int)->数据?{
让passwordData=password.data(使用:.utf8)!
让derivedKeyData=数据(计数:keyByteCount)
var localVariables=derivedKeyData
让derivationStatus=localVariables.withUnsafeMutableBytes{derivedKeyBytes in
salt.withUnsafeBytes{saltBytes in
CCKeyDerivationPBKDF(CCPBKDF算法(kCCPBKDF2),
密码,passwordData.count,saltBytes.bindMemory(to:UInt8.self)。基址,salt.count,
哈希,UInt32(圆形),
derivedKeyBytes.bindMemory(to:UInt8.self).baseAddress,derivedKeyData.count)
}
}
如果(派生状态!=0){
日志错误(“\(派生状态)”)
返回零;
}
返回本地变量
}

这有帮助吗?-这个问题与[r]有什么关系?我添加它是因为警报有一个r。我已经查看了你的链接,但我不知道如何更改我的代码。。。我对斯威夫特了解不多。你能帮我一下吗@MartinR??这个标签是用来回答关于“一个用于统计计算和图形的自由软件环境”的问题的。噢,@MartinR我不知道这和这个有什么不同。“对不起,”马丁纳,“我怎样才能消除我的警告呢?”?我需要你的帮助。@MartinR嗯。。。。我还有一个问题。UInt8的范围从0到255。我认为这是一个非常小的范围。UInt8是否不太可能有重复的值?