【问题标题】:append data to start of NSMutableArray将数据附加到 NSMutableArray 的开头
【发布时间】:2013-10-20 07:44:18
【问题描述】:

我有一个应用程序,我可以在其中显示两个用户之间的最新对话。

为此,我使用 XML 提要数据。

假设我在一个 XML 中有 25 行,并且 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

现在,当我单击加载更多按钮 (startIndex=0) 时,我将 XML 数据附加到我的提要 (NSMutableArray) 中。但是所有新的聊天都降到了底部而不是顶部。

我知道这是因为我在末尾添加了数据。

知道如何在提要的开头附加数据,以便两个用户之间的消息在 tableview 中正确传递吗?


简而言之,我已经拥有 NSMutableArray 中的数据(假设大小为 20)。我想添加一些数据(假设长度为 10)。

因此,新数据将位于位置 0-9,而在添加新数据时,位于 0-19 的旧数据将转移到 10-29。

知道怎么做吗?

【问题讨论】:

  • 每次 NSMutableArray alloc 当他点击更多动作时
  • @kirtimali : 不......如果我分配,我之前的数据就不见了......
  • 如果您查看过 NSMutableArray 的规范,您会看到 insertObject:atIndex:
  • @HotLicks : 感谢您的热门 cmets :D :P

标签: ios objective-c xml-parsing nsmutablearray feed


【解决方案1】:

有一个 NSMutableArray:

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

一开始就推送数据:

[myarray insertObject:myData atIndex:0];

编辑:

要对两个数组执行此操作(在数组开头插入几个新对象),您可以循环并使用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];

【讨论】:

  • insertObject:atIndex 会将现有对象移动一个。
【解决方案2】:

首先在 NSMutableArray 中获取数据并使用以下代码反转 Array 的对象:

reversedArray = [[theMutableArray reverseObjectEnumerator] allObjects];

【讨论】:

    猜你喜欢
    • 2016-10-01
    • 2018-10-31
    • 2015-02-04
    • 1970-01-01
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多