Форум программистов, компьютерный форум, киберфорум
Наши страницы
Swift
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
77Dim77
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
1

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

23.02.2016, 07:16. Просмотров 779. Ответов 4

Добрый день.

Подскажите, как проверить полученные данные от веб сервиса? Мой код:
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 (данные) или нет. Или вернул ли веб сервис что-нибудь. Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2016, 07:16
Ответы с готовыми решениями:

Отправка данных из формы и вывод полученных данных
помогите с скриптом на jquery, который бы выполнял вот эту задачу: при...

Хранение полученных данных
В программе при запуске определённой активити запрашиваются данные с сервера...

Сортировка полученных данных из БД
Помогите мне решить такую задачку: вот моя структура БД MIME_TYPE...

Сортировка полученных из бд данных
Как лучще реализовать сортировку уже выведенных из бд данных? К примеру юзер...

Обработка полученных данных.
Я сделал сервер на чистых WinSock1. Потом принимаю данные. char str; err =...

4
Vorona
Peace 2 all shining faces
672 / 534 / 84
Регистрация: 05.03.2010
Сообщений: 1,283
24.02.2016, 00:32 2
Лучший ответ Сообщение было отмечено 77Dim77 как решение

Решение

учите правила языка, никто переменные не называет с большой буквы как 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 и с чем его едят
0
77Dim77
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
24.02.2016, 13:02  [ТС] 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 буду разбираться.
0
cin_cout
27 / 27 / 7
Регистрация: 06.10.2012
Сообщений: 130
24.02.2016, 22:00 4
Лучший ответ Сообщение было отмечено 77Dim77 как решение

Решение

Один из лучших туториалов по NSURLSession:
NSURLSession учебник

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

NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String: AnyObject]
0
77Dim77
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
25.02.2016, 13:08  [ТС] 5
Да, спасибо разобрался. Сделал проверку на длину массива перед его использованием.
0
25.02.2016, 13:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2016, 13:08

Просмотр полученных данных
Здравствуйте! Есть ajax - запрос, который отправляется на сервер: $.ajax({ ...

Задать формат данных, полученных из БД
Здравствуйте! Запрашиваю из MS SQL данные и заполняю ими DataGridView....

Обработка данных полученных из SerialPort
Добрый день. подскажите пожалуйста как решить следующую задачу? На VB.NET...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru