不正经IT从业者

ios_币种大全列表本地数据交换

2018-06-22  本文已影响1人  Mark_大东

场景:币种大全列表需要做收藏、取消收藏操作。

常规步骤如下:1.点击收藏、取消收藏按钮;2调用收藏、取消收藏接口;3.reload币种大全接口;现在的为题是币种大全接口需要6秒才能响应,用户等不了呀,so…….本地交换数据。

本地数据交换问题:因为币种大全接口是list返回数组全是数组(NSArray),数组的子对象是字典(NSDictionary), 需要注意的是NSArray、NSDictionary不可增删改查,需要改成NSMutableArray、NSMutableDictionary才能操作数据,但是NSMutableArray位置是随机的,还需要保证数据位置不改变。这个时候就需要一个bridge的数据来做桥梁保证数据位置固定。ps:我们的币种大全列表是有索引的,所以本地数据交换的交换的难度还是有的。

现在功能已完成,做个记录:

- (void)addCoinsRequest{
    [[CMMarketAllCoinApi sharedInstance] allCoinAddWithtargetIds:self.targetId andSuccess:^(NSDictionary *success) {
        NSString *collectId = [success objectForKey:@"data"];
        NSArray *array = [NSArray arrayWithArray:_dict[self.headerTitle]];
        NSMutableArray *cc = [NSMutableArray new];
        for (int i = 0 ; i < array.count ; i ++) {
            NSDictionary *diction =array[i];
            [cc addObject:diction];
            NSMutableDictionary *muDict = [NSMutableDictionary dictionaryWithDictionary:diction];
            NSString *targetIdString =[NSString stringWithFormat:@"%@", [diction objectForKey:@"targetId"]];
            if ([targetIdString isEqualToString:self.targetId]) {
                [muDict removeObjectForKey:@"collectId"];
                [muDict setValue:collectId forKey:@"collectId"];
                [cc removeObject:diction];
                [cc addObject:muDict];
            }
        }
        [_dict setObject:cc forKey:self.headerTitle];
        [BaseLoading showSuccessWithText:@"收藏成功"];
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.tableView reloadData];
        });
    } andFailure:^(NSString *failure) {
        
    }];
}
上一篇下一篇

猜你喜欢

热点阅读