2013-10-12 2 views
-1

У меня есть приложение, где я показываю последний разговор между двумя пользователями.добавить данные в начало NSMutableArray

Для этого я использую данные XML-каналов.

Предположим, у меня есть 25 строк в одном XML, а URL-адрес выглядит следующим образом.

www.mywebsite.com/getChat.asmx?startIndex=0 

Когда я нажимаю кнопку loadMore, ссылка идет, как показано ниже.

www.mywebsite.com/getChat.asmx?startIndex=1 

В этом снова я получаю 25 строк.

Теперь у меня проблема с отображением данных.

Когда я открываю сообщение, с startIndex = 0, я помещаю последнее сообщение внизу. Значит, я получаю данные в формате ниже.

4 hours ago... 
3 hours ago... 
2 hours ago... 
44 mins ago... 
etc 

Теперь, когда я нажимаю кнопку loadmore (STARTINDEX = 0), я добавляя данные XML в моих каналах (NSMutableArray). Но все новые чаты приходят вниз, а не наверху.

Я понимаю, что это происходит, потому что я добавляю данные в конце.

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


Короче говоря, у меня уже есть данные в NSMutableArray (допустим, размер 20). И я хочу добавить некоторые данные (скажем, о длине 10).

Таким образом, новые данные будут в позиции 0-9, а старые данные, которые были там в 0-19, будут сдвинуты на 10-29 при добавлении новых данных.

Любая идея, как это сделать?

+0

каждый раз NSMutableArray Alloc, когда нажать больше действий –

+0

@kirtimali: nope .. Если я выделил, мои предыдущие данные исчезли ... –

+1

Если бы вы просмотрели спецификацию для NSMutableArray, вы бы увидели 'insertObject: atIndex:'. –

ответ

2

Сначала получите данные в NSMutableArray и поменять местами объекты вашего массива, используя код ниже:

reversedArray = [[theMutableArray reverseObjectEnumerator] allObjects]; 
0

Имея NSMutableArray:

NSMutableArray * myarray = [[NSMutableArray alloc] init]; 

Чтобы передавать данные в начале вы делаете:

[myarray insertObject:myData atIndex:0]; 

EDIT:

Чтобы сделать это для двух массивов (вставив несколько новых объектов в начале массива) вы можете использовать цикл insertObject:atIndex:, вы также можете использовать insertObjects:atIndexes: или можете создать новый массив и даже не нужно будет изменяемые массивы:

NSArray* dataArray; 

//When new data is received in newDataArray, you can insert it at the beginning of dataArray 
NSArray* newDataArray; 
dataArray = [newDataArray arrayByAddingObjectsFromArray:dataArray]; 
+0

, но что делать с данными, которые уже есть? –

+0

см. Мой обновленный вопрос –

+0

insertObject: atIndex сместит существующие объекты на один. – Odrakir

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