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

这部分是通过ReactiveXMPP 获取在线好友的 通过 第二部分

同样在单例中添加一个获取好友的方法 通过block 吧好友返回

- (void)loadFriend:(XMPPLoadFriendBlock)FriendBlock{
}

这里获取好友通过 NSFetchedResultsController 这个类的实例对象中的fetchedObjects得到好友
当好友改变时通过NSFetchedResultsController对象的代理:controllerDidChangeContent 通知
照常添加方法


- (void)loadFriend:(XMPPLoadFriendBlock)friendBlock{
[self loadFriendModule];
[[self rac_signalForSelector:@selector(controllerDidChangeContent:)] subscribeNext:^(id x) {
// 传给block 好友
FriendBlock(_fetchedController.fetchedObjects);
}];
}

这里注意问题
如果不实现 controllerDidChangeContent 方法:

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller{
}

[[self rac_signalForSelector:@selector(controllerDidChangeContent:)] 就不能监听好友的值导致我发正常获取好友 这是一个小坑 具体原因有待研究....
在tableViewController控制器viewDidLoad执行loadFriend方法:

[[XMPPTool sharedXMPPTool] loadFriend:^(NSArray *friends) {
NSLog(@"%ld",friends.count);
self.friends=friends;
[self.tableView reloadData];
}];

这是可以正常获取到好友啦

ReactiveCocoa 结合 XMPP 学习笔记 第三部分_第1张图片
Simulator Screen Shot 2016年4月21日 下午10.28.46.png

完整Dome

你可能感兴趣的:(ReactiveCocoa 结合 XMPP 学习笔记 第三部分)