如何删除使用 xep-0136(消息存档)保存的聊天消息?
How to delete a chat message which was saved using xep-0136(Message Archiving)?
我想为用户提供使用 long-tap/select 操作一次删除一条或多条消息的功能。
我知道你想知道到目前为止我尝试了什么。但问题是我还没有找到任何关于删除消息的实现。
感谢任何形式的帮助!
您必须从 xmpp 核心数据库中删除邮件。
所以 xmpp 创建了 "XMPPMessageArchiving_Message_CoreDataObject" 命名的核心数据库 table 并使用它你可以删除消息。
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];
}
@Parthpatel1105 的回答是正确的,尽管正如@Bista 所说,它不会永久删除消息。
执行删除后,任何删除,如@Parthpatel1105 所做的完全删除,或单个消息,这将是相同的但没有 for 循环,您必须找到要删除的单个消息。您必须保存存储上下文。
也就是说,在做完之后:
for (NSManagedObject *managedObject in items) {
[mocObject deleteObject:managedObject];
}
您必须添加调用才能保存,
在Swift(我用过的地方):
mocObject.save()
在 Objective-C 中,我认为应该是这样的:
[mocObject save:&error];
我想为用户提供使用 long-tap/select 操作一次删除一条或多条消息的功能。
我知道你想知道到目前为止我尝试了什么。但问题是我还没有找到任何关于删除消息的实现。
感谢任何形式的帮助!
您必须从 xmpp 核心数据库中删除邮件。 所以 xmpp 创建了 "XMPPMessageArchiving_Message_CoreDataObject" 命名的核心数据库 table 并使用它你可以删除消息。
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];
}
@Parthpatel1105 的回答是正确的,尽管正如@Bista 所说,它不会永久删除消息。
执行删除后,任何删除,如@Parthpatel1105 所做的完全删除,或单个消息,这将是相同的但没有 for 循环,您必须找到要删除的单个消息。您必须保存存储上下文。
也就是说,在做完之后:
for (NSManagedObject *managedObject in items) {
[mocObject deleteObject:managedObject];
}
您必须添加调用才能保存,
在Swift(我用过的地方):
mocObject.save()
在 Objective-C 中,我认为应该是这样的:
[mocObject save:&error];