2017-02-01 18 views
-1

Я не знаю, как правильно это сделать, поэтому я покажу на фотографиях.Как получить данные JSON в цепочке ссылок и поместить их в ту же модель?

Я создаю первый URLSession, извлекаю данные из JSON, включая ссылки на данные, которые я хочу использовать в той же модели.

первая ссылка:

SchreenShot

С первым запросом я получил ссылки на другую информацию, я хочу использовать в той же таблице:

ссылки из первой ссылки:

ScreenShot

Я пытаюсь извлечь данные из первой и второй ссылок и объединить их в одну модель данных/таблицу/ячейку.

Мне нужно сделать еще URLSession, но я не могу понять, как собрать информацию вместе. Возможно ли запустить один URLSession внутри другого? Любые предложения, как это сделать?

+0

, пожалуйста, добавьте ваш код также в виде текста. выберите код и нажмите кнопку '{}', после чего он получит отступ в 4 пробела и отображается как код. (вы можете оставить изображения) – muescha

+0

ok - данные json доступны на домашней странице api – muescha

+0

Отправить уведомление, чтобы удалить этот вопрос, так как я хочу описать проблему с кодом. – odvan

ответ

0

я рекомендовал бы использовать некоторые библиотеки к абстрактному некоторой сложности - Alamofire/SwiftyJSON

Alamofire.request(url, method: .get).responseJSON { response in 
switch response.result { 
case .success(let value): 
    let json = JSON(value) 
    //pull your links out of the json and make another request here 
    Alamofire.request(json["fixtures"]["competition"]["href"], method: .get).responseJSON { response in 
     switch response.result { 
      case .success(let value): 
      let json2 = JSON(value) 
      //handle the json from your second request 
     } 
    } 
} 

Имейте в виду, что это псевдо-код. Не пытайтесь вырезать и вставлять - но это должно привести вас в общем направлении.

+0

Его что-то я думал о, добавьте второй URL-адрес в другой. Но приложение потерпело крах с findind null, разворачивающим некоторую переменную. – odvan

+0

SwiftyJSON поможет разобрать JSON и безопасно разворачивать нуль. Но, без вашего реального кода, его невозможно помочь вам больше. – dmorrow

0

создать job queue, где вы разместите свою задачу (= Получить данные).

Запустите очередь с вашим корневым URL-адресом. когда он возвращается из асинхронного вызова, разбор данных JSON - заполнение ваших локальных структур в качестве владельца данных. и следующие 1 или 2 ссылки, которые следует за вами, помещаются в очередь.

Возможно, помните уже полученный URL-адрес в массиве, чтобы вы могли проверить, что вы не читаете некоторые данные дважды.

ПРИМЕЧАНИЕ. На сайте api существует ограничение скорости звонка. если вы создаете общедоступное приложение, тогда вы должны подумать о том, как кэш-серверу кешировать все вызовы до 50/24h или 50/1min

+0

Его не публично, только для обучения. – odvan

+0

Итак, логика: начать первый сеанс, поставить задачу в пользовательскую созданную очередь, получить данные, поместить ее в структуру, а затем создать другую задачу для получения более глубоких данных уровня. Где я должен перезагрузить таблицу и как заполнить ячейки? Просто поместите некоторые данные из одной структуры и некоторые данные из других? Но проблема в том, что мне нужно сделать что-то вроде массива задач. Например, сегодня его 8 игр, 16 команд, мне нужно 16 заданий? – odvan

0

Я думаю, что нашел решение, следует использовать «группу отправки».