В NSURLRequest обнаружено неправильное значение NSStringEncoding 0x0000
Я получаю сообщение об ошибке при попытке конвертировать NSData
в NSString
в Свифте
Это моя просьба:
var request = NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReturnCacheDataElseLoad, timeoutInterval: 200)
Я получаю ошибку здесь:
var mydata :NSData = NSURLCache.sharedURLCache().cachedResponseForRequest(request)!.data
var datastring = NSString(data: mydata, encoding: UInt()) as! String
Мои оба пытаются избавиться от ошибки предупреждения, но не работают: я увеличил timeoutInterval
быть 200 .
И я попробовал:
var myinfo = NSString(bytes: mydata.bytes, length: mydata.length, encoding: self.responseEncoding())
func responseEncoding() -> NSStringEncoding {
return responseEncoding()
}
Это решение не сработало для меня здесь: обнаружено неправильное значение NSStringEncoding 0x0000
1 ответ
Решение
UInt()
создает целое число со значением ноль, поэтому вы эффективно вызываете
var datastring = NSString(data: mydata, encoding: 0) as! String
Но 0
не является допустимым аргументом для параметра кодирования, вы должны заменить его действительным NSStringEncoding
например, NSUTF8StringEncoding
,
Также обратите внимание, что преобразование может завершиться неудачей, поэтому лучше использовать необязательную привязку вместо принудительного приведения:
if let datastring = NSString(data: mydata, encoding: NSUTF8StringEncoding) as? String {
} else {
// Encoding error ...
}