0

У меня есть 4 асинхронных сетевых запроса с блоком завершения. По завершении я хочу, чтобы они были добавлены в мастер NSMutableArray - это порядок отправки запросов, но не тот порядок, в котором они были получены (как это может быть иначе). У меня есть тег, который я установил при отправке запроса, поэтому я могу использовать этот тег в блоке завершения.Добавить объекты в массив в определенном порядке?

ответ

2

Заполните массив четырьмя NSNulls изначально. В обработчике [yourArray replaceObjectAtIndex:tag withObject:responseObject].

+0

в 'viewDidLoad', я сделал:' self.masterArray = [NSMutableArray arrayWithObjects: NULL, NULL, NULL, NULL, nil]; 'и в блоке завершения у меня есть:' [self.masterArray replaceObjectAtIndex: aReceipt.tag withObject: [aSearchObjectType objectsFromServerDictionaries: aResultsArray]] ;;. Однако я получаю исключение. – Jon

+0

@Jon: NULL - это то же самое, что и nil, и не является законным в массиве. Здесь вы можете использовать NSNull, который получается через '[NSNull null]'. – Chuck

+0

Последнее, если на сервере нет результатов, массив не изменяется, поэтому мне нужно проверить это в 'numberOfRowsInSection'. Я попробовал 'NSArray * sectionArray = [self.masterArray objectAtIndex: iSection]; if (sectionArray == [NSNull null]) { return 1; } else { return sectionArray.count; } ', но это сравнение не работает. – Jon

2

Я предполагаю, что вы не знаете, сколько элементов возвратит каждый запрос, поэтому вам нужно будет хранить все четыре набора результатов временно, пока все четыре запроса не будут завершены. (Правило NSMutableDictionary, введенное с помощью тега, будет иметь смысл.) Затем вы можете перебирать ключи словаря и присоединять эти объектные свойства (массивы) к вашему изменяемому массиву в правильном порядке.

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