ReactiveCocoa 结合 XMPP 学习笔记 第三部分

这部分是通过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>
这是可以正常获取到好友啦

Simulator Screen Shot 2016年4月21日 下午10.28.46.png

完整Dome

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容