美文网首页
ReactiveCocoa 结合 XMPP 学习笔记 第三部分

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

作者: Gaooof | 来源:发表于2016-04-21 22:29 被阅读23次

    这部分是通过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

    相关文章

      网友评论

          本文标题:ReactiveCocoa 结合 XMPP 学习笔记 第三部分

          本文链接:https://www.haomeiwen.com/subject/pdntrttx.html