使用 xmpp 获取 XMPPGroupCoreDataStorageObject,但 NSManagingContextDidSaveChangesNotification 似乎不起作用
Posted
技术标签:
【中文标题】使用 xmpp 获取 XMPPGroupCoreDataStorageObject,但 NSManagingContextDidSaveChangesNotification 似乎不起作用【英文标题】:fetch XMPPGroupCoreDataStorageObject using xmpp,but NSManagingContextDidSaveChangesNotification seems not work 【发布时间】:2011-11-15 07:12:23 【问题描述】:- (NSFetchedResultsController *)fetchedGroupResultsController
if (fetchedGroupResultsController == nil)
NSManagedObjectContext *moc = [[self appDelegate] managedObjectContext_roster];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"XMPPGroupCoreDataStorageObject"
inManagedObjectContext:moc];
NSSortDescriptor *sd1 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
//NSSortDescriptor *sd2 = [[NSSortDescriptor alloc] initWithKey:@"displayName" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sd1, nil];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:entity];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setFetchBatchSize:10];
fetchedGroupResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:moc
sectionNameKeyPath:@"name"
cacheName:nil];
[fetchedGroupResultsController setDelegate:self];
[sd1 release];
//[sd2 release];
[fetchRequest release];
NSError *error = nil;
if (![fetchedGroupResultsController performFetch:&error])
NSLog(@"Error performing fetch: %@", error);
return fetchedGroupResultsController;
`
我使用这种方法来获取组结果并且它有效。但是当我的一个联系人在线或离线时,
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
[[self tableView] reloadData];
方法不会被调用,所以我的表格视图不会被重新加载,状态也不会被刷新。我很难过,谁能帮帮我?
【问题讨论】:
【参考方案1】:我希望这仍然有用..
那是因为您获取的是 XMPPGroupCoreDataStorageObject,而不是 XMPPUserCoreDataStorageObject。每当有人在线或离线时,名册中的 XMPPUserCoreDataStorageObject 都会发生变化,因此
-(void)controllerDidChangeContent:(NSFetchedResultsController *)controller [[self tableView] reloadData];
将被调用。
尝试使用 XMPPUserCoreDataStorageObject 代替 XMPPGroupCoreDataStorageObject,你会看到不同。
【讨论】:
以上是关于使用 xmpp 获取 XMPPGroupCoreDataStorageObject,但 NSManagingContextDidSaveChangesNotification 似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python xmpppy 获取 XMPP 服务器中所有 MUC 的列表?