json数据填充和多选以获取ID
Posted
技术标签:
【中文标题】json数据填充和多选以获取ID【英文标题】:json data populate and multiselection to get Ids 【发布时间】:2016-11-16 07:04:53 【问题描述】:我必须发布一个 JSON 并作为响应获取用户 ID 和更多的东西。我已将它添加到一个数组并填充我的 tableview。像这样。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
ModelClass * model = __arrayForContacts[indexPath.row];
MYcustomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
现在,我已将多选应用到我的 tableview。我想从多选行中获取用户 ID。我希望它在下一个 JSON 解析中作为请求发布。我该如何实现这一点,任何帮助都是谢谢。
【问题讨论】:
你是否在 ModelClass 中声明了多选属性? 你能解释一下为什么需要它吗? 检查我的答案。您需要在名为 isSelected 的模型类中声明 bool 属性以跟踪您的选择。 你声明了 isSelected 属性吗? 【参考方案1】:tableview的didselect方法需要如下设置
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
yourobjectClass *objCookBook = [arrCookBook objectAtIndex:indexPath.row];
objCookBook.isSelected = !objCookBook.isSelected;
//[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
//[tableView deselectRowAtIndexPath:indexPath animated:YES];// uncomment above line if you want to reload table
你可以得到如下:
// isSelected 是你的选择标志
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isSelected == 1"];
NSArray *arrSelected = [arrCookBook filteredArrayUsingPredicate:predicate];
if (arrSelected.count > 0)
NSlog(@"%@",[arrSelected valueForKey:@"userId"]); // replace your id name and post it to json
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[arrSelected valueForKey:@"userId"] options:NSJSONWritingPrettyPrinted error:nil];
NSString *JsonString = [[NSString alloc] initWithData:jsonData2 encoding:NSUTF8StringEncoding];
【讨论】:
为什么要跟踪选择。当 indexPathsForSelectedRows 提供所有被选择的行时。 因为如果我们想在末尾发布 json 是一种简单的方法。如果你想使用 indexPathsForSelectedRows 那么你需要在最后做更多的工作。 @MuhammadZohaibEhsan 你能通过 indexPathForSelectedRows 解释一下吗?我正在做和介于两者之间。 我想说两者都需要工作。所以最好使用已经实现的东西。 :)【参考方案2】:如果你想应用自定义多选,那么试试这个,它永远不会失败。 请按照以下步骤操作:-
-
使用循环在数组的每个字典中添加新值
当你得到回应。像这样
对于 0 中的 j ..
-
在 cellForRowAtIndexPath 中应用条件
让 dictList = arrList.objectAtIndex(indexPath.row) as! NSMutableDictionary let val = dictList.objectForKey("attribute_option_list") as!细绳 如果 val == "0" “取消选中” 别的 “查看”
-
还应用 didSelectRowAtIndexPath 中的条件,更改特定索引字典中 val 键的值
让 dictList = arrList.objectAtIndex(indexPath.row) as! NSMutableDictionary 让 val = dictList.objectForKey("attribute_option_list") 作为!细绳 如果 val == "0" dictList.setObject("1", forKey: "val") 别的 dictList.setObject("0", forKey: "val") arrList.replaceObjectAtIndex(indexPath.row, withObject: dictList) tblView.reloadData()
不要忘记重新加载表并使用正确的条件检查取消选中和键的值
也可以将选中的数据以json格式返回给服务器
【讨论】:
以上是关于json数据填充和多选以获取ID的主要内容,如果未能解决你的问题,请参考以下文章