如何从iOS中的XMPP服务器删除特定用户的聊天?

时间:2015-09-30 09:20:44

标签: ios objective-c xcode xmpp ejabberd

我是iPhone应用程序开发的新手。我正在iOS中使用XMPP和Ejabberd开发聊天应用程序。但我无法删除特定用户的聊天(不是单个消息)。

    -(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    [self DeleteMessageChat:indexPath];
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        [messages removeObjectAtIndex:indexPath.row];
        [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
                         withRowAnimation:UITableViewRowAnimationFade];
    }
}

-(void)DeleteMessageChat :(NSIndexPath *)indexpath
{
    self.cls=[self.arrProfile objectAtIndex:indexpath.row];
    NSString *userJid = [NSString stringWithFormat:@"%@%@",self.cls.UserId,Xmppserver];
    XMPPMessageArchivingCoreDataStorage *storage = appDelegate.xmppMessageArchivingStorage;
    NSManagedObjectContext *moc = [storage mainThreadManagedObjectContext];
    NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject"
                                                         inManagedObjectContext:moc];
    NSFetchRequest *request = [[NSFetchRequest alloc]init];
    [request setEntity:entityDescription];
    NSString *predicateFrmt = @"bareJidStr == %@";
    NSError *error;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateFrmt, userJid];
    request.predicate = predicate;
    NSArray *messages_new = [moc executeFetchRequest:request error:&error];

    NSManagedObject *obj=[messages_new objectAtIndex:indexpath.row];
    [moc deleteObject:obj];

    error = nil;
    if (![moc save:&error])
    {
        NSLog(@"Error deleting movie, %@", [error userInfo]);
    }
}

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:2)

我在我的代码中这样做了。尝试根据您的阵列进行编辑。

commitEditingStyle

我在.stop()委托方法中添加了此代码。在这里,您在userJid中传递朋友姓名,并在userJid1中登录用户名。