iOS解决融云的 "attempt to delete row 0 from section 0 which only contains 0 rows before the update" 问题

如果用户已经登录了app我会将用户的信息保存在本地包括融云登录的Token, 然后以后每次用户启动App的时候使用融云Token登录融云, 然而测试的时候从首页跳到消息(也就是融云即时通讯)模块发现总会出现一个融云的bug:

 *** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.30.14/UITableView.m:1426
 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete row 0 from section 0 which only contains 0 rows before the update'

在网上搜也没有类似的问题, 苦思良久, 想到应该是因为进入消息页面时页面初始化太晚造成的, 于是我在首页即对消息模块进行初始化:

    // 如果本地有用户信息, 登录下融云
    if ([UserDefaults isLogin]) {

        MineUserInfoModel *user = [UserDefaults getUserInfo];

        [[RCIM sharedRCIM] connectWithToken:user._token success:^(NSString *userId) {

            // 解决融云的 attempt to delete row 0 from section 0 which only contains 0 rows before the update 问题
            // 登录融云成功后即对会话列表进行初始化
            [MyChatViewController shareMyChatViewController];

        } error:^(RCConnectErrorCode status) {

        } tokenIncorrect:^{

        }];
    }

其中shareMyChatViewController方法为:

+ (MyChatViewController *)shareMyChatViewController{

    static MyChatViewController *myChatVC = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{

        myChatVC = [[MyChatViewController alloc] init];

    });

    return myChatVC;
}

结果, 解决了!!

留给后来的人.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值