【发布时间】:2014-06-08 20:07:41
【问题描述】:
我有一个对象数组(包含一条消息),每个对象都具有相同的结构。它有一个消息属性,即NSDictionary。一本字典是这样的:
<message: {
keyCreateDate = "06/08/14 21:23";
keyMessage = Lorem ipsum;
keyReceiverChannel = sampleString;
keySenderUser = SampleName;
},...
我的目标是创建一个“收件箱”,我想在其中显示来自每个单元格中每个用户的最新消息。我希望只显示来自每个用户的最新消息,例如 Fb 消息、What'sApp 或 iMessage 收件箱,表格视图中的每个单元格都代表来自朋友的最新消息。它看起来很容易,但它比我想象的要困难得多。所以我需要删除每个朋友的每条消息,但始终保持最新消息。实际上,我可以删除一个用户的所有消息,但不能在删除其他用户时保留最新消息。是否有可能做到这一点?
我可以使用此代码删除一个指定用户的所有消息:
NSMutableArray *originalArray = [[NSMutableArray alloc]initWithArray:message];
NSMutableArray *objectsToRemove = [[NSMutableArray alloc]init];
NSMutableArray *cloneArray = [NSMutableArray arrayWithArray:originalArray];
for (NMessage *messageObject in originalArray) {
if ([messageObject.message[@"keySenderUser"] isEqual:usernameString]) {
[objectsToRemove addObject:messageObject];
}
}
if ([objectsToRemove count]>0) {
[cloneArray removeObjectsInArray:objectsToRemove];
NSLog(@"deleted: %@", objectsToRemove);
self.messagesArray = [[NSMutableArray alloc]initWithArray:cloneArray];
我认为这会更容易,如果我能以某种方式向[cloneArray removeObjectsInArray:objectsToRemove]; 行添加一个例外,这不会删除最新的。但这也是一个问题,我需要在删除消息之前根据keySenderUser 对消息进行排序。我的实际代码无法做到这一点,它只能找到一个预定义用户的消息并将其全部删除。如果您有任何想法,请与我分享。提前致谢。
【问题讨论】:
-
您是否从数据库中获取日期?
-
@Goppinath 是的。我将发送消息时的日期包含在字典中,并且我正在从服务器在这里检索它们。
-
为什么不在数据库级别做所有事情?
-
@Goppinath 因为我无法访问它。我正在使用 PubNub 历史 API,据我所知,这是不可能的。
标签: ios objective-c nsmutablearray nsdictionary