Форум программистов, компьютерный форум, киберфорум
Наши страницы

Swift

Войти
Регистрация
Восстановить пароль
 
77Dim77
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 9
#1

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

23.02.2016, 07:16. Просмотров 599. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Alamofire проверка полученных данных (Swift):

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

Обработка полученных данных. - C++
Я сделал сервер на чистых WinSock1. Потом принимаю данные. char str; err = recv(s1, str, sizeof(str), 0 ); Есть пару вопросов. ...

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

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

Сортировка полученных из бд данных - C# ASP.NET
Как лучще реализовать сортировку уже выведенных из бд данных? К примеру юзер делает какую-либо выборку, ему выводится таблица из бд...

Сортировка полученных данных из БД - PHP БД
Помогите мне решить такую задачку: вот моя структура БД MIME_TYPE MT_ID Идентификатор записи MT_VALUE Mime-type ...

4
Vorona
Peace 2 all shining faces
669 / 531 / 45
Регистрация: 05.03.2010
Сообщений: 1,283
24.02.2016, 00:32 #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 и с чем его едят
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
26 / 26 / 7
Регистрация: 06.10.2012
Сообщений: 119
24.02.2016, 22:00 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Один из лучших туториалов по 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
Привет! Вот еще темы с ответами:

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

Вывод данных, полученных из БД, не работает. - PHP БД
Здравствуйте не знаю как изложить свою проблему, нужно вывести в цыкле из БД, а не получается...И ошибку не выдает и результата нет ...

обработка полученных данных с COM порта - Delphi
Доброго всем времени суток. Вопрос такого плана - есть некое устройство посылающее данные в COM порт. Нужно на первом этапе ловить эти...

Vk api обработка полученных данных - Delphi
Доброе время суток Дорогие знатоки подскажите пожалуйста как можно обработать данные полученные после запроса дело в том что хотел...


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

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

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