2015-09-30 5 views
1

Я новичок в разработке приложений для iPhone. Я работаю над приложением чата в iOS, используя XMPP и Ejabberd. Но я не могу удалить чат конкретного пользователя (ни одного сообщения).Как удалить чат конкретного пользователя с сервера XMPP в iOS?

Пожалуйста, помогите мне решить эту проблему.

ответ

2

Я сделал это в своем коде. Попробуйте отредактировать в соответствии с вашими массивами.

NSString *userJid = [NSString stringWithFormat:@"%@%@",cell.frndName.text,DomainName]; 
     NSString *userJid1= [NSString stringWithFormat:@"%@%@",[[NSUserDefaults standardUserDefaults]valueForKey:@"name"],DomainName]; 

     NSFetchRequest *messagesCoreD = [[NSFetchRequest alloc] init]; 
     NSManagedObjectContext *context=[[self appDelegate].xmppMessageArchivingCoreDataStorage mainThreadManagedObjectContext]; 
     NSEntityDescription *messageEntity = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Contact_CoreDataObject" inManagedObjectContext:context]; 
      [messagesCoreD setEntity:messageEntity]; 
     [messagesCoreD setIncludesPropertyValues:NO]; //only fetch the managedObjectID 
     NSString *predicateFrmt = @"bareJidStr == %@"; 
     NSString *predicateFrmt1 = @"streamBareJidStr == %@"; 
     NSPredicate *predicateName = [NSPredicate predicateWithFormat:predicateFrmt,userJid]; 
     NSPredicate *predicateSSID = [NSPredicate predicateWithFormat:predicateFrmt1,userJid1]; 

     NSArray *subPredicates = [NSArray arrayWithObjects:predicateName, predicateSSID, nil]; 

     NSPredicate *orPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:subPredicates]; 

     messagesCoreD.predicate = orPredicate; 
     NSError * error = nil; 
     NSArray * messages = [context executeFetchRequest:messagesCoreD error:&error]; 
     //error handling goes here 
     [tableView reloadData]; 
     for (NSManagedObject * message in messages) 
     { 
      [context deleteObject:message]; 
      [tableView reloadData]; 
     } 
     NSEntityDescription *messageEntity1 = [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject" inManagedObjectContext:context]; 
     [messagesCoreD setEntity:messageEntity1]; 
     [messagesCoreD setIncludesPropertyValues:NO]; //only fetch the managedObjectID 

     messagesCoreD.predicate = orPredicate; 
     NSArray * messages1 = [context executeFetchRequest:messagesCoreD error:&error]; 
     //error handling goes here 
     [tableView reloadData]; 
     for (NSManagedObject * message in messages1) 
     { 
      [context deleteObject:message]; 
      [tableView reloadData]; 
     } 

     NSError *saveError = nil; 
     [context save:&saveError]; 

Я добавил этот код в commitEditingStyle делегировать метод. Здесь вы вводите имя друга в userJid и регистрируете имя пользователя в userJid1.

+0

Tysm. Извините, но я не могу повышать свою репутацию, поскольку у меня недостаточно репутации. –

+0

Нет проблем, это помогло. Thats достаточно :) hv gud day –

Смежные вопросы