如何删除使用xep-0136(消息存档)保存的聊天消息?

时间:2015-05-27 09:17:39

标签: ios objective-c xmppframework

我希望为用户提供使用长按/选择操作一次删除一条或多条消息的功能。

我知道你想知道到目前为止我尝试了什么。但问题是我没有找到任何关于删除要实施的消息的内容。

感谢任何形式的帮助!

2 个答案:

答案 0 :(得分:4)

您必须从xmpp核心数据库中删除邮件。 所以xmpp创建了名为core database table的“XMPPMessageArchiving_Message_CoreDataObject”,使用它可以删除消息。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject" inManagedObjectContext:myAppdelObject.Obj_xmppManager.moc];
[fetchRequest setEntity:entity];

NSError *error;
NSArray *items = [mocObject executeFetchRequest:fetchRequest error:&error];


for (NSManagedObject *managedObject in items) {
    [mocObject deleteObject:managedObject];
}

答案 1 :(得分:0)

@ Parthpatel1105的答案是正确的,尽管正如@Bista所说,它不会永久删除消息。

执行删除后,任何删除(如@ Parthpatel1105那样完全删除)或一条消息,都是相同的,但没有for循环,您必须找到要删除的单个消息。您必须保存存储上下文。

这样做后的意思是

for (NSManagedObject *managedObject in items) {
    [mocObject deleteObject:managedObject];
}

您必须添加通话以保存,

在Swift中(我使用过的地方):

mocObject.save()

在Objective-C中,我认为应该是这样的:

[mocObject save:&error];