В 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 ...
}
Другие вопросы по тегам