0

В RestKit 0.10.3 с использованием методов делегирования мне удалось отправить одновременные запросы GET, даже если отображение каждого из них было выполнено последовательно. У меня есть запросы GET, для которых требуется столько времени, чтобы получить ответ, поэтому я хотел бы отправлять все запросы одновременно, но уважать порядок в сопоставлении (у меня есть отношения, пересекающие три запроса). Что мне нужно:RestKit 0.2x одновременное RKManagedObjectRequestOperation

1) отправить запрос GET n. 1, отправьте запрос GET n. 2, отправьте запрос GET n. 3

2) начать отображение запроса 1, как только ответ 1 получен

3) при отображении ответа 1 было закончить, ждать ответа 2 и карту (или просто начать отображение, если уже получено)

4) при отображении ответа 2 было закончить, ждать ответа 3 и карта (или просто начать отображение, если уже получил)

Что, кажется, случается (если operationQueue на objectManeger НЕ установлен в 1) :

1) отправить запрос GET n. 1, отправьте запрос GET n. 2, отправьте запрос GET n. 3

2) карта ответа, как только будет получено и предыдущее отображение закончило

Вопрос 1: это возможно, соблюдать порядок в отображении?

Вопрос 2: Может ли отображаться больше ответов (точка 2) одновременно? Другими словами, это возможно:

1) отправить запрос GET n. 1, отправьте запрос GET n. 2

2) начать реакцию отображения 1

3) начать ответ отображение 2

4) реакция отображения 1 заканчивается

отклика 5) отображение 2 заканчивается

Если это невозможно, у меня было бы «половинное» решение: enqueue каждый запрос в willMapDeserializedResponseBlock. Запросы не будут отправляться одновременно, но по крайней мере я смогу отправить каждый запрос до предыдущего сопоставления.

Вопрос 3: если я дублировать «addConnectionForRelationship» из entityMappings по обе стороны скрещенных отношений, три отображения должны выполняться одновременно, и порядок не должно быть важно больше. Возможно ли это, не создавая какого-либо злого поведения (дублирующие объекты, осиротевшие объекты, отсутствующие отношения, низкая производительность)?

Я сошел с ума? : D

ответ

0

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

В 2 общие решения являются:

  1. Не запускать запросы одновременно
  2. ли все окурка объектов, созданных на фронт, а затем ответы заселить и связать их

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

Смежные вопросы