Ios inout字符串不能转换为Swift 3中的字符串
我有以下代码在Swift 2中运行良好:Ios inout字符串不能转换为Swift 3中的字符串,ios,swift3,Ios,Swift3,我有以下代码在Swift 2中运行良好: jsonObject = [ "AppId": fetchQueryResult[0].appId, "MobileNo": String( data: try RNDecryptor.decryptData(self.fetchQueryResult[0].userMobileNumber.dataFromHexString() as Data!,
jsonObject = [
"AppId": fetchQueryResult[0].appId,
"MobileNo": String(
data: try RNDecryptor.decryptData(self.fetchQueryResult[0].userMobileNumber.dataFromHexString() as Data!, withPassword: Constants.ENCRYPTION_KEY),
encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))! as String,
"DeviceType": Constants.DEVICE_TYPE,
"AppVersion": fetchQueryResult[0].appVersion,
"Password": NSString(data: try RNDecryptor.decryptData(self.fetchQueryResult[0].password.dataFromHexString(), withPassword: Constants.ENCRYPTION_KEY), encoding: String.Encoding.utf8)! as String
]
但是,我正在将代码升级到Swift 3,但出现了一个错误:
“inout String”不能转换为“String”类型
它在这一行给出了错误:
"MobileNo" : String(data .....)
有关更多详细信息,我正在编写函数dataFromHexString()
:
我是iOS新手。提前感谢。您应该将作业包装在do/catch块中,以正确处理任何异常
do {
jsonObject = [
"AppId": fetchQueryResult[0].appId,
"MobileNo": String(
data: try RNDecryptor.decryptData(self.fetchQueryResult[0].userMobileNumber.dataFromHexString() as Data!, withPassword: Constants.ENCRYPTION_KEY),
encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))! as String,
"DeviceType": Constants.DEVICE_TYPE,
"AppVersion": fetchQueryResult[0].appVersion,
"Password": NSString(data: try RNDecryptor.decryptData(self.fetchQueryResult[0].password.dataFromHexString(), withPassword: Constants.ENCRYPTION_KEY), encoding: String.Encoding.utf8)! as String
]
} catch let error {
print(error.localizedDescription)
}
您应该将分配包装在do/catch块中,以正确处理任何异常
do {
jsonObject = [
"AppId": fetchQueryResult[0].appId,
"MobileNo": String(
data: try RNDecryptor.decryptData(self.fetchQueryResult[0].userMobileNumber.dataFromHexString() as Data!, withPassword: Constants.ENCRYPTION_KEY),
encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue))! as String,
"DeviceType": Constants.DEVICE_TYPE,
"AppVersion": fetchQueryResult[0].appVersion,
"Password": NSString(data: try RNDecryptor.decryptData(self.fetchQueryResult[0].password.dataFromHexString(), withPassword: Constants.ENCRYPTION_KEY), encoding: String.Encoding.utf8)! as String
]
} catch let error {
print(error.localizedDescription)
}
请检查以下代码:
mutating func dataFromHexString() -> NSMutableData {
let data = NSMutableData(reserveCapacity(characters.count / 2))
let regex = try! NSRegularExpression(pattern: "[0-9a-f]{1,2}", options: .caseInsensitive)
regex.enumerateMatches(in: self, options: [], range: characters.startIndex..<characters.endIndex) {
match, flags,stop in
let byteString = (self as NSString).substring(with: match!.range)
let num = UInt8(byteString.withCString {strtoul($0, nil, 16)})
data.append([num], length: 1)
}
return data
}
mutating func dataFromHexString()->NSMutableData{
let data=NSMutableData(保留容量(characters.count/2))
让regex=try!NSRegularExpression(模式:“[0-9a-f]{1,2}”,选项:。不区分大小写)
regex.enumerateMatches(in:self,options:[],range:characters.startIndex..请检查以下代码:
mutating func dataFromHexString() -> NSMutableData {
let data = NSMutableData(reserveCapacity(characters.count / 2))
let regex = try! NSRegularExpression(pattern: "[0-9a-f]{1,2}", options: .caseInsensitive)
regex.enumerateMatches(in: self, options: [], range: characters.startIndex..<characters.endIndex) {
match, flags,stop in
let byteString = (self as NSString).substring(with: match!.range)
let num = UInt8(byteString.withCString {strtoul($0, nil, 16)})
data.append([num], length: 1)
}
return data
}
mutating func dataFromHexString()->NSMutableData{
let data=NSMutableData(保留容量(characters.count/2))
让regex=try!NSRegularExpression(模式:“[0-9a-f]{1,2}”,选项:。不区分大小写)
regex.enumerateMatches(in:self,options:[],range:characters.startIndex..试试这个(self.fetchQueryResult[0]。userMobileNumber as!String)。dataFromHexString()你能检查self.fetchQueryResult[0]吗。userMobileNumber是字符串吗?是的,它是字符串@NSManaged var userMobileNumber:String试试这个(self.fetchQueryResult[0]。userMobileNumber as!String).dataFromHexString()是否可以检查self.fetchQueryResult[0].userMobileNumber是一个字符串?是的,它是一个字符串@NSManaged var userMobileNumber:StringThank您的建议,但我在这一行遇到了相同的错误:range:characters.startIndex..谢谢您的建议,但我在这一行遇到了相同的错误:range:characters.startIndex。。