这部分是通过ReactiveXMPP 获取在线好友的 通过 第二部分
同样在单例中添加一个获取好友的方法 通过block 吧好友返回
<code>
- (void)loadFriend:(XMPPLoadFriendBlock)FriendBlock{
}
</code>
这里获取好友通过 NSFetchedResultsController 这个类的实例对象中的fetchedObjects得到好友
当好友改变时通过NSFetchedResultsController对象的代理:controllerDidChangeContent 通知
照常添加方法
<code>
- (void)loadFriend:(XMPPLoadFriendBlock)friendBlock{
[self loadFriendModule];
[[self rac_signalForSelector:@selector(controllerDidChangeContent:)] subscribeNext:^(id x) {
// 传给block 好友
FriendBlock(_fetchedController.fetchedObjects);
}];
}
</code>
这里注意问题
如果不实现 controllerDidChangeContent 方法:
<code>
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller{
}
</code>
[[self rac_signalForSelector:@selector(controllerDidChangeContent:)] 就不能监听好友的值导致我发正常获取好友 这是一个小坑 具体原因有待研究....
在tableViewController控制器viewDidLoad执行loadFriend方法:
<code>
[[XMPPTool sharedXMPPTool] loadFriend:^(NSArray *friends) {
NSLog(@"%ld",friends.count);
self.friends=friends;
[self.tableView reloadData];
}];
</code>
这是可以正常获取到好友啦
完整Dome
网友评论