将超时设置为活动指示器在Web服务没有响应时保持旋转

时间:2015-02-11 06:33:55

标签: ios objective-c web-services xcode6 connection-timeout

我正在使用REST API来获取数据。我有两种方法,一种用于ResponceSucces,另一种用于responceFailure。在响应失败时,我只是忽略了活动指标。有时会发生数据未被检索但仍然活动指示器无限旋转的情况。并且没有调用ResponceFailure方法。

我的问题是我可以为我的网络服务设置超时间隔,检查响应是否未到来,然后活动指示器必须在一段时间后被解雇,例如20/30秒。 以下是我的代码:

-(void)messagesGetSuccess:(FBListingsWebHandler*)handler response:(NSDictionary*)response
{
    [MBProgressHUD hideHUDForView:self.view animated:YES];
    [[FBModelManager sharedModelManager].messages removeAllObjects];
    NSArray *messagesArray = [response objectForKey:@"message"];
    if([[FBUserManager sharedUserManager] userType] == kUserShipper){
        //extract usernames of transporters who placed bid on selected listing
        NSArray *userNames;
        NSMutableArray *transporterNames;
        NSDictionary *biddingsDic = [[FBModelManager sharedModelManager] getModelDictionary:kModelBiddings];
        if ([biddingsDic count] > 0){
            userNames = [[biddingsDic allValues] valueForKey:@"userName"];
            NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:userNames];
            NSSet *uniqueNames = [orderedSet set];
            transporterNames = [[NSMutableArray alloc] initWithArray:[uniqueNames allObjects]];
        }
        //add transporter records in messages dictionary who have messages for selected listing
        for (int i = 1; i < [messagesArray count]; i++) {
            NSMutableArray *modelArray = [[NSMutableArray alloc] init];
            NSDictionary *groupedMsgDic = [messagesArray objectAtIndex:i];
            int count = (int)[[[groupedMsgDic allValues] objectAtIndex:0] count];
            for (int j = 0; j < count; j++) {
                FBMessagesModel *model = [[FBMessagesModel alloc] initWithMessageItems:[[[groupedMsgDic allValues] objectAtIndex:0] objectAtIndex:j]];
                [modelArray addObject:model];
                model = nil;
            }
            [[FBModelManager sharedModelManager].messages setObject:modelArray forKey:[[groupedMsgDic allKeys] objectAtIndex:0]];
            //remove transporter usernames from array who have messages besides bid for selected listing
            if([transporterNames containsObject:[[groupedMsgDic allKeys] objectAtIndex:0]]){
                [transporterNames removeObject:[[groupedMsgDic allKeys] objectAtIndex:0]];
            }
            modelArray = nil;
        }
        //add transporter records in messages dictionary who placed bid but have no message for selected listing
        for (int i = 0; i < [transporterNames count]; i++) {
            NSString *path = [[[biddingsDic allValues] objectAtIndex:[userNames indexOfObject:[transporterNames objectAtIndex:i]]] photoPath];
            int transporterId = [[[biddingsDic allValues] objectAtIndex:[userNames indexOfObject:[transporterNames objectAtIndex:i]]] userId];
            NSString *objectForZeroMsgs = [NSString stringWithFormat:@"%@-%d",path,transporterId];
            [[FBModelManager sharedModelManager].messages setObject:objectForZeroMsgs forKey:[transporterNames objectAtIndex:i]];
        }
        transporterNames = nil;

        //        [self tableView:self.shipperGroupedMessagesTableView_ numberOfRowsInSection:0];
        [self.shipperGroupedMessagesTableView_ reloadData];
    }else if([[FBUserManager sharedUserManager] userType] == kUserTransporter){
        for (int i = 1; i < [messagesArray count]; i++) {
            FBMessagesModel *model = [[FBMessagesModel alloc] initWithMessageItems:[messagesArray objectAtIndex:i]];
            [[FBModelManager sharedModelManager].messages setObject:model forKey:[NSString stringWithFormat:@"%d",model.mailId]];
            if(model.mailMessage && ![model.mailMessage isEqualToString:@""]){
                [self createMessageBubble:model];
            }
            model = nil;
        }
        [self.bubbleTableView_ reloadData];
    }

}
-(void)messagesGetFailure:(FBListingsWebHandler*)handler
{
    [MBProgressHUD hideHUDForView:self.view animated:YES];
    [[FBModelManager sharedModelManager].messages removeAllObjects];
    if([[FBUserManager sharedUserManager] userType] == kUserTransporter){
        [self.bubbleTableView_ reloadData];
    }
    else if([[FBUserManager sharedUserManager] userType] == kUserShipper){
        if([[FBModelManager sharedModelManager].messages count] == 0){
            NSDictionary *biddingsDic = [[FBModelManager sharedModelManager] getModelDictionary:kModelBiddings];
            if ([biddingsDic count] > 0){
                NSArray *userNames = [[biddingsDic allValues] valueForKey:@"userName"];
                NSOrderedSet *orderedSet = [NSOrderedSet orderedSetWithArray:userNames];
                NSSet *uniqueNames = [orderedSet set];
                NSArray *transporterNames = [uniqueNames allObjects];
                [[FBModelManager sharedModelManager].messages removeAllObjects];
                for (int i = 0; i < [transporterNames count]; i++) {
                    NSString *path = [[[biddingsDic allValues] objectAtIndex:[userNames indexOfObject:[transporterNames objectAtIndex:i]]] photoPath];
                    int transporterId = [[[biddingsDic allValues] objectAtIndex:[userNames indexOfObject:[transporterNames objectAtIndex:i]]] userId];
                    NSString *objectForZeroMsgs = [NSString stringWithFormat:@"%@-%d",path,transporterId];
                    [[FBModelManager sharedModelManager].messages setObject:objectForZeroMsgs forKey:[transporterNames objectAtIndex:i]];
                }
                [self.shipperGroupedMessagesTableView_ reloadData];
            }else{
                [self addNoMessagesLabel];
            }
        }
        [self.shipperGroupedMessagesTableView_ reloadData];
    }

}

我正在添加截图。

enter image description here

0 个答案:

没有答案