在ViewControllers之间同步以进行后台解析

时间:2015-05-03 22:07:33

标签: ios objective-c parse-platform

我的iOS应用中有多个View Controllers,我使用parse来获取一些数据。 主VC就是这样的:

 NSMutableArray* onlineGroups=[NSMutableArray array];

 PFUser* currUser=[PFUser currentUser];
 //Is the user cached?
 if (currUser) {
 PFRelation *relation = [currUser relationForKey:@"groups"];
 //Make the query and fetch the data ,save result in objects

    for (PFObject* object in objects) {
        //Did the group admin remove me? or am I still a member?
        if ([Group iamAMemberInOnlineGroup:object]) {
            Group* group=[Group groupFromPFObject:object];
            if (group) {
                [onlineGroups addObject:group];

            }
        }
        //I was removed from group by admin , remove this group from my relation
        else
        {
            [relation removeObject:object];

        }

 [currUser save];
  }

Group是我的模型类,获取在线组的方法将从解析云中获取数据,它就像这样

'NSInternalInconsistencyException', reason: 'User 
    cannot be saved unless they have been authenticated via logIn or  signUp'

问题是我有一个VC设置,可以选择退出 所以如果fetch在后台运行并且用户注销,我会从后台运行线程

中获得异常
document.getElementById('employee').addEventListener('change', function() {
    this.selectedOptions[0].setAttribute('data-dept', 'Employee');
});

从我抬起头来看,杀死正在运行的线程是邪恶的,可能会导致很多问题。

这是我最好选择在获取处于活动状态时设置标志并且如果该标志被提升则禁用注销? 如果是,我该怎么办? 我的意思是我如何拥有一个在所有控制器之间共享的变量

由于

2 个答案:

答案 0 :(得分:1)

我认为实现这一点的最佳方法是在用户注销时发送NSNotification。注册正在进行查询的类作为注销NSNotification的观察者。在该类内部维护所有活动查询的列表。当用户在cancel上注销来电PFQuery时。

Canceling a query in Parse

答案 1 :(得分:0)

寻找Singleton来设置/删除你的旗帜。这种方法可以解决您的问题,但是为了获得更好的解决方案,您应该在从服务器获取数据之前锁定用户交互(可能是hud)。希望它有所帮助。