Ответ 1
С Xcode 7.1.1 Не исправлено, но это обходное решение помогло мне:
if let protocolStr = JSON["version"] as AnyObject as! String {
Я обновил свой код до XCode 7 и Swift 2.0, теперь некоторые из моих тестов терпят неудачу, и я вижу список из 40 предупреждений в сборке Test, которые полностью не связаны с кодом, на который они ссылаются. Предупреждающее сообщение:
"Cast From 'XCUIElement' to unrelated type 'String' always fails"
И это пример строки, которая выдает предупреждение:
if let protocolStr = JSON["version"] as? String{
Я еще не использую тесты пользовательского интерфейса XC... поэтому я не могу понять, почему этот код относится к этому классу. Есть идеи?
Обновление: 9 ноября С XCode 7.1 проблема все еще существует.
С Xcode 7.1.1 Не исправлено, но это обходное решение помогло мне:
if let protocolStr = JSON["version"] as AnyObject as! String {
Я думаю, что вы уже исправили свою проблему, но в случае, если кто-то еще смотрит на это:
Проблема в том, что JSON имеет тип AnyObject, я предполагаю, что он не знает, что вы можете индексировать его как словарь. Если вы передадите его как [String: AnyObject] перед раздачей, это не даст вам ошибки. (как вы заметили)
edit: Что касается того, почему это дает вам эту ошибку, я не уверен. Вероятно, ошибка.
Все, что мне нужно было сделать, это ввести ключевую строку ( "версия" ) на NSString
так:
if let protocolStr = JSON["version" as NSString] as? String {
…
}
Xcode 7.2, быстрый 2.2
Попробуйте это
if let protocolStr = JSON.valueForKey("version") as? String{
//your code
}