Невозможно присвоить значение типа NSTaggedPointerString 'NSNumber'

У меня такая структура Swift.

struct Usage { var totalData: Double var remainingTotalData: Double init(jsonData: NSData) { var jsonDict = [String: AnyObject]() do { jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: AnyObject] } catch { print("Error occurred parsing data: \(error)") } totalData = jsonDict["totalfup"] as! Double remainingTotalData = jsonDict["totalrem"] as! Double } } 

Из API я получаю следующий ответ JSON. Это println переменной jsonDict .

 [ "totalfup": 96.340899, "totalrem": 3548710948 ] 

Когда я пытаюсь назначить значение totalfup для свойства totalData , я получаю эту ошибку.

Невозможно присвоить значение типа NSTaggedPointerString 'NSNumber'

Кто-нибудь знает почему? Я попытался изменить тип свойства на float а затем всю структуру на класс, но все же проблема возникает.

4 Solutions collect form web for “Невозможно присвоить значение типа NSTaggedPointerString 'NSNumber'”

Причиной ошибки является jsonDict["totalfup"] – это String, поэтому вы должны преобразовать String в Double.

Убедитесь, что вы выбрали исключение и тип проверки до форсирования

 totalData = (jsonDict["totalfup"] as! NSString).doubleValue 

Для безопасного использования, if let :

 if let totalfup = (dict["totalfup"] as? NSString)?.doubleValue { } 

Я думаю, это может помочь вам

 totalData = Double(jsonDict["totalfup"] as! String)! 

Причина отказа заключается в том, что JSON возвращает значения String , а не числа.

Если возвращенные данные JSON содержат только эти две пары ключей, объявите тип как [String:String] который избегает кастомизации типов.

В любом случае вам нужно поместить код для обновления переменных в «хорошую» ветвь выражения do - catch .

 struct Usage { var totalData = 0.0 var remainingTotalData = 0.0 init(jsonData: NSData) { // Swift 3: Data do { let jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as! [String: String] // Swift 3: let jsonDict = try NSJSONSerialization.jsonObject(with: jsonData) as! [String: String] totalData = Double(jsonDict["totalfup"]!) remainingTotalData = Double(jsonDict["totalrem"]!) } catch { print("Error occurred parsing data: \(error)") } } } 

почему бы не использовать родные типы Swift напрямую?

 import Foundation struct Usage { var totalData: Double = 0 var remainingTotalData: Double = 0 init(jsonData: NSData) { do { if let jsonDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: []) as? [String:Double] { totalData = jsonDict["totalfup"] ?? 0 remainingTotalData = jsonDict["totalrem"] ?? 0 } } catch { print("Error occurred parsing data: \(error)") } } } if let data = "{\"totalfup\":96.340899,\"totalrem\":3548710948}".dataUsingEncoding(NSUTF8StringEncoding) { let usage = Usage(jsonData: data) dump(usage) /* ▿ Usage - totalData: 96.340899 - remainingTotalData: 3548710948.0 */ } 
  • Основные данные Относительно многих отношений, не сохраняющих его данные
  • Прогресс запроса Alamofire
  • UIWebView и Swift: обнаружение при запуске видео
  • Как отклонить viewController в ios с помощью Swift
  • IOS Contacts, как кодировать и декодировать imageData в String и отправлять его через словарь infoDiscovery с рекламодателем MPC
  • Преобразование Swift UnsafePointer <AudioStreamBasicDescription> в словарь?
  • Почему UIUserNotificationType.None возвращает true в текущих настройках, когда предоставляется разрешение пользователя?
  • Обертка Alamofire вызывает пользовательские объекты в Swift?
  • iOS представляет контроллер представления, анимированный как «Push» (левая левая анимация)
  • Проблема с "try?" И AVAudioPlayer
  • Перетаскиваемая метка - ios
  • Interesting Posts

    Как сохранить строки раскадровки в актуальном состоянии?

    Добавить UIImage прямо в FBSDKShareLinkContent с Swift?

    Сбой iOS с waitForExpectationsWithTimeout

    Передача данных обратно с помощью функции rejectViewControllerAnimated

    Есть ли путь, в котором каждое приложение может записывать файлы в iPhone для джейлбрейка?

    запуск раскадровки экрана для нескольких устройств и различных ориентаций iOS

    iOS-устройства возвращают модель устройства с разными форматами, почему?

    Короткий URL-адрес не открыт в приложении со всемирными ссылками

    Как войти на сайт с помощью запроса POST? (Swift, IOS)

    iPhone: экран блоков клавиатуры

    интеграция iAD в 3d-игру

    Трудности с запуском приложения iOS 5 на iOS 4

    UIView поверх UIScrollview, проходит только свитки, а не краны

    Класс отказоустойчивости не работает должным образом для подключения VPN

    Autolayout и программные ограничения: как бороться с updateConstraints стрельбы несколько раз?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.