Проблемы с быстрым обновлением Xcode 7.0

Я пытаюсь обновить свой проект для работы с Xcode 7.0, и после обновления моих проектов Swift я получаю сообщение об ошибке, которое не понимаю в этой строке.

let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary

Ошибка

"Вызов может завершиться, но он не помечен как "попытаться" и ошибка не обрабатывается"

Я также получаю эти две ошибки в моих файлах проекта...

"Команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов)"

а также

"ошибка: невозможно проанализировать карту отладки для "/Users/MattFiler/Library/Developer/Xcode/DerivedData/ePlanner-cqwzlxqgpwaloubjgnzdlomjkfea/Build/Intermediates/SwiftMigration/ePlanner/Products/Debug-iphonesimulator/ePlannerTests.xctest/ePlannerTests" : Нет такого файла или каталога"


person MattFiler    schedule 09.06.2015    source источник


Ответы (2)


Попробуйте этот код:

do {
    let jsonData = try NSJSONSerialization.JSONObjectWithData(urlData!, options: .MutableContainers ) as! NSDictionary
    // Use jsonData here
} catch {
    print("Well something happened: \(error)")
}

Вам понадобится ключевое слово try, так как NSJSONSerialization.JSONObjectWithData теперь выдает ошибку, если что-то не удалось со времен Swift 2. Выбрасывающие функции должны быть отмечены try или try!.

Также вам понадобится do { ... } catch для обнаружения любых ошибок, которые могут возникнуть. Это поймает ошибку и обработает ее.

Вы можете прочитать изменения в Swift 2, чтобы понять, почему это произошло. Также будут очень полезны видеоролики WWDC.

person vrwim    schedule 09.06.2015
comment
Полезно, спасибо. Я не знаю, почему они должны обновлять язык, это раздражает таких учеников, как я. - person MattFiler; 10.06.2015
comment
@MattFiler Не забудьте принять ответ, если он решил вашу проблему, и проголосовать, если он превзошел ваши ожидания. - person vrwim; 10.06.2015
comment
Сделали, спасибо! Я также использую UIWebView в своем проекте, и теперь я получаю сообщение об ошибке загрузки HTTP NSURLSession/NSURLConnection (kCFStreamErrorDomainSSL, -9802) после обновления Xcode. Вы знаете, что может быть причиной этого? Раньше он работал абсолютно нормально, но теперь он не загружает мои веб-страницы. - person MattFiler; 10.06.2015
comment
@MattFiler Нет, не знаю. Кажется, что-то связанное с SSL. Найдите домен ошибки (kCFStreamErrorDomainSSL) и код ошибки (9802). Создайте новый вопрос, если вы не можете его найти. - person vrwim; 10.06.2015
comment
Спасибо. После поиска кажется, что у нескольких людей возникла такая же проблема, этот исправил ее для меня: stackoverflow.com/questions/30720813/ - person MattFiler; 10.06.2015

Вам нужно попробовать и поймать, если он выдает ошибку.

do {
    let jsonData:NSDictionary = try NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary
    //...
}
catch {
}
person Leo Natan    schedule 09.06.2015
comment
Я пробовал это раньше, но позже в коде я получаю ошибки, говорящие о том, что переменная является неразрешенным идентификатором, когда я пытаюсь вызвать «jsonData». - person MattFiler; 09.06.2015
comment
Вы использовали jsonData внутри блока do? - person Leo Natan; 09.06.2015