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) {
}];
}