-2
我收到錯誤在我的代碼斯威夫特3遷移錯誤
func dataFromHexadecimalString(_ key:String) -> NSString? {
let trimmedString = key.trimmingCharacters(in: CharacterSet(charactersIn: "<> ")).replacingOccurrences(of: " ", with: "")
let regex: NSRegularExpression?
do {
regex = try NSRegularExpression(pattern: "^[0-9a-f]*$", options: .caseInsensitive)
} catch _ as NSError {
regex = nil
}
let found = regex?.firstMatch(in: trimmedString, options: [], range: NSMakeRange(0, trimmedString.characters.count))
if found == nil || found?.range.location == NSNotFound || trimmedString.characters.count % 2 != 0 {
return nil
}
let data = NSMutableData(capacity: trimmedString.characters.count/2)
//I am Getting error here i.e C-style for statement has been removed in Swift 3
for var index = trimmedString.startIndex; index < trimmedString.endIndex; index = Collection.index(after: Collection.index(after: index)) {
let byteString = trimmedString.substring(with: (index ..< Collection.index(after: Collection.index(after: index))))
let num = UInt8(byteString.withCString { strtoul($0, nil, 16) })
data?.append([num] as [UInt8], length: 1)
}
let enCodedUTF8String = NSString(data: data! as Data, encoding: String.Encoding.utf8.rawValue)
return enCodedUTF8String
}
得到錯誤即C-style for statement has been removed
見上從我可以告訴你的代碼,代碼
這是正確的,在Swift 3中C樣式for循環已被刪除。我會爲您的代碼提供一個修復程序,但我不知道它在做什麼。 'Collection.index(after:Collection.index(after:index)))'???你實際上在你的代碼中做什麼?我有一種感覺,有一種更簡單更優雅的方式來做你想做的事情。 – Fogmeister
似乎傳遞的'key'參數是一個'Data'對象創建的String。在代碼中,您將其轉換回「Data」並再次返回到「String」。這非常麻煩。您可以在一行中創建來自原始'Data'對象的十六進制表示'let enCodedUTF8String = data.map {String(format:「%02x」,$ 0)} .joined()' – vadian