Форум программистов, компьютерный форум CyberForum.ru

Alamofire проверка полученных данных - Swift

Войти
Регистрация
Восстановить пароль
 
77Dim77
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
23.02.2016, 07:16     Alamofire проверка полученных данных #1
Добрый день.

Подскажите, как проверить полученные данные от веб сервиса? Мой код:
Objective-C
1
2
3
4
5
6
7
Alamofire.request(.GET, URLString, parameters).responseJSON() { (response) -> Void in
 
        if let jsonResult = response.result.value {
            let Field1 = jsonResult[0]["Field1"] as! String;
 
         ....
    }
Если данные есть, то все хорошо. Но если данных нет, веб сервис ничего не возвращает, то выдается ошибка на эту строку:

Objective-C
1
let Field1 = jsonResult[0]["Field1"] as! String;
Потому что response.result.value является пустым. Там содержится Optional(()).
В Response.data содержится Optional(<5b5d>)

Насколько я понимаю, мне нужно проверять response.result.value содержит json (данные) или нет. Или вернул ли веб сервис что-нибудь. Как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2016, 07:16     Alamofire проверка полученных данных
Посмотрите здесь:

C++ Обработка полученных данных.
C# ASP.NET Сортировка полученных из бд данных
отправка данных из формы и вывод полученных данных jQuery
Visual Basic .NET Обработка данных полученных из SerialPort
Android Хранение полученных данных
Delphi Vk api обработка полученных данных
Сортировка полученных данных из БД PHP БД
Swift Проверка качества пароля
Просмотр полученных данных PHP

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
661 / 523 / 44
Регистрация: 05.03.2010
Сообщений: 1,270
24.02.2016, 00:32     Alamofire проверка полученных данных #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
учите правила языка, никто переменные не называет с большой буквы как Field1

аналогично, разберитесь с конструкциями языка, а то вы скопипастили откуда-то пример и не понимаете что там зачем
если бы сами писали, то не было бы такого вопроса

это
C++
1
2
3
4
if let jsonResult = response.result.value {
    let Field1 = jsonResult[0]["Field1"] as! String;
    // ...
}
замените на это
C++
1
2
3
4
5
if let jsonResult = response.result.value {
    if let field1 = jsonResult[0]["Field1"] as? String {
        // ...
    }
}
или на это
C++
1
2
3
4
if let jsonResult = response.result.value {
    guard let field1 = jsonResult[0]["Field1"] as? String else { return }
    // ...
}
читайте учебник и разберитесь, что такое Optional и с чем его едят
77Dim77
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
24.02.2016, 13:02  [ТС]     Alamofire проверка полученных данных #3
Все равно выдает на class AppDelegate

В консоль пишет:
2016-02-24 19:58:51.535 Project1[14528:2254563] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds for empty NSArray'
.........
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)

C Optional буду разбираться.
cin_cout
25 / 25 / 7
Регистрация: 06.10.2012
Сообщений: 119
24.02.2016, 22:00     Alamofire проверка полученных данных #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Один из лучших туториалов по NSURLSession:
NSURLSession учебник

Двумерному массиву в JSON неоткуда взяться (синтаксис someArray[][] - это двумерный массив, матрица, а не словарь). Собственно, отсюда и error 'out-of-bounds' вылезает.
JSON as? NSData - это словарь (dictionary), который содержит массив (Array) других словарей. Его надо получить в response и распарсить с помощью стандартных инструментов из API.

NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: AnyObject]
77Dim77
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
25.02.2016, 13:08  [ТС]     Alamofire проверка полученных данных #5
Да, спасибо разобрался. Сделал проверку на длину массива перед его использованием.
Yandex
Объявления
25.02.2016, 13:08     Alamofire проверка полученных данных
Ответ Создать тему

Метки
json, swift, web services
Опции темы

Текущее время: 22:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru