У меня много разочарований в Swift, когда речь заходит о работе со словарями и NSDictionaries.Swift NSDictionary Типы детей
Я тяну данные с сервера. Одним из значений является Bool.
Я начал с словаря Swift и перешел в NSDictionary из-за разочарования. Тем не менее, я все еще не могу получить значения из словаря.
Все последующие завершаться противоречивые ошибки:
let unread:Bool = data!["unread"] as! Bool
let unread:Bool = data?["unread"] as! Bool
let unread:Bool = data?.objectForKey("unread") as! Bool
let unread:NSNumber = data?["unread"] as! NSNumber
ошибка: Не удалось бросить значение типа 'NSTaggedPointerString' (0x110c1eae8) к 'NSNumber' (0x10e0ab2a0).
Хорошо, похоже, что данные поступают в виде строки ... давайте попробуем:
let unreadStr:String = data!["unread"] as! String
let unreadStr:NSString = data!["unread"] as! NSString
Ошибка: Не удалось ввергнуть значение типа '__NSCFBoolean' (0x1097413b8) к 'NSString' (0x106bcdb48) ,
Так что я смущен. Когда я пытаюсь преобразовать его в Bool, он говорит, что я не могу преобразовать String в Number. Когда я пытаюсь преобразовать его в String, он говорит, что я не могу преобразовать число в строку.
Вот что данные выглядит следующим образом:
Optional({
senderId = 10154040;
sent = 1460844986973;
text = "Test Message 1";
unread = false;
})
Это, как я преобразовать данные с сервера: если позволить ДИКТ: NSDictionary = snapShot.value как? NSDictionary { let data = dict.allValues [0] as? NSDictionary –
Может ли быть, что ваш сервер посылает вам непоследовательные представления о Bool - иногда как String, иногда как Bool? –
Я просто подключил SwiftyJSON, и теперь все отлично работает. https://github.com/SwiftyJSON/SwiftyJSON –