我想从xmppRosters获得名单。有两种方法:
发送iq
- (void)queryRoster {
NSXMLElement *query = [NSXMLElement elementWithName:@"query" xmlns:@"jabber:iq:roster"];
NSXMLElement *iq = [NSXMLElement elementWithName:@"iq"];
XMPPJID *myJID = self.stream.myJID;
[iq addAttributeWithName:@"from" stringValue:@"zhaoyan@127.0.01"];
[iq addAttributeWithName:@"to" stringValue:@"127.0.0.1"];
[iq addAttributeWithName:@"id" stringValue:@"1993"];
[iq addAttributeWithName:@"type" stringValue:@"get"];
[iq addChild:query];
[self.stream sendElement:iq];
}
获取CoreData
的名单,但我没有得到正确的结果,我非常沮丧。
- (void)getRosters
{
self.xmppRosterStorage = [[XMPPRosterCoreDataStorage alloc]init];
self.roster = [[XMPPRoster alloc]initWithRosterStorage:_xmppRosterStorage];
_roster.autoFetchRoster = YES;
_roster.autoAcceptKnownPresenceSubscriptionRequests= YES;
[_roster fetchRoster];
[_roster activate:self.stream];
self.context = _xmppRosterStorage.mainThreadManagedObjectContext;
NSFetchRequest * request = [[NSFetchRequest alloc]initWithEntityName:NSStringFromClass([XMPPUserCoreDataStorageObject class])];
NSString * useinfo = @"zhaoyan@127.0.0.";
NSPredicate *predicate =[NSPredicate predicateWithFormat:@"streamBareJidStr=%@",useinfo];
request.predicate = predicate;
NSSortDescriptor * sortD = [NSSortDescriptor sortDescriptorWithKey:@"displayName" ascending:YES];
[request setSortDescriptors:@[sortD]];
self.resultsController = [[NSFetchedResultsController alloc]initWithFetchRequest:request managedObjectContext:self.context sectionNameKeyPath:nil cacheName:nil];
// 执行fetch
NSError * error = nil;
[self.resultsController performFetch:&error];
self.resultsController.delegate = self;
if (error)
{
NSLog(@"error coredata");
}
else
{
NSLog(@"fetch array : %@",[self.resultsController fetchedObjects]);
}