ios - 匹配单击的 TableView 行(字符串)以找到对应的唯一 ID

标签 ios objective-c uitableview

我目前被困在如何最好地查找和传递单击的表格 View 行的 ID。我想知道实现这一目标的最佳实践是什么。

  • 在 iPhone Storyboard中,我想创建一个 tableview .
  • 此 TableView 应从 填充JSON 网络服务器响应。
  • 这个 JSON 对象将包含大约 10 件 ,说出名字和
    地址加上一个唯一的 ID。
  • 在我的表格 View 中,我希望在每个表格 View 行中都有一个名称
    和地址,但我不想显示唯一 ID。

  • 现在来了我的问题 : 如果我没有显示唯一 ID,如何根据点击的行再次找到该 ID?有没有分配隐藏字段的方法?我想通过 POST 发送唯一 ID返回网络服务器。

    到目前为止,我一直在调查的方向是...
  • ...将 JSON 对象解析为 NSDictionary并将单击的 tableview 行匹配回它以获取 ID。
  • ...将 JSON 对象放入 SQLlite 数据库并将单击的行与数据库匹配以获取 ID。
  • ...不要做上述任何事情,只需 发送一串姓名和地址 (而不是 ID)返回到将与数据库进行匹配的 Web 服务器。

  • 您认为从单击的 tableview 行中获取相应 ID 的最佳方法是什么。

    非常感谢您的时间。

    最佳答案

    这就是你可以做到这一点的方法

    调用您的网络服务并获取 json。解析 json 并继续将对象添加到 NSMutableArray 中,比如 itemList。

    创建一个模型类,比如 Itemdesc,它将有 3 个字段名称、地址和 ID。

    当您解析 json 时,将每个单独的产品提取到上面定义的项目模型对象中,并将其添加到 itemList 数组中。

    它可能是这样的:

    NSArray *responseArray = responsefromService;
    For(int i=0;i<responseArray.count;i++)      
        {
            //Parse your object here
            NSDictionary *currentItem = [responseArray objectAtIndex:i];
            Itemdesc *itemObject = [[Itemdesc alloc] init];
            itemObject.name = [currentItem objectForKey:@"name"];
            itemObject.address = [currentItem objectForKey:@"address"];
            itemObject.ID = [currentItem objectForKey:@"ID"];
            [itemList addObject:itemObject];
            itemObject=nil;
         }
    

    现在将此数组作为对象传递给 tableView 以获取行数,并在 cellForRowAtIndexPath 中获取您的行对象,如下所示:
    Itemdesc *currentIndexObj = [itemList objectAtIndex:indexpath.row];
    cell.name.text = currentIndexObj.name;
    cell.address.text = currentIndexObj.address;
    

    这将在您的 tableViewCell 中显示您的姓名和地址。

    要在选择一行时获取 ID,请在您的 didSelectRowAtIndexPath 中编写以下代码:
    Itemdesc *currentIndexObj = [itemList objectAtIndex:indexpath.row];
    NSString *ID = currentIndexObj.ID;
    NSLog(@"ID  value: %@", ID);
    

    你有你的ID,执行你想要执行的任何操作。

    模型类只不过是一个普通的类本身。
    创建模型类的代码:
    转到文件 -> 新建 -> 文件 ->iOS-> 源 -> CocoaTouch 类

    选择下一个并给 Class 一个名称 ItemDesc 并使其成为 NSObject 的子类。在您的项目中,您将获得文件 Itemdesc.h 和 Itemdesc.m

    Itemdesc.h 文件:
    #import <Foundation/Foundation.h>
    
    @interface Itemdesc : NSObject
    @property(nonatomic,strong) NSString *name;
    @property(nonatomic,strong) NSString *address;
    @property(nonatomic,strong) NSString *itemID;
    

    @结尾

    无需对 .m 文件进行任何更改。
    就是这样。在您的 tableView 存在的类中导入标题并且事情会起作用。

    json结构:
    [
        { 
             "name" : "John", 
             "address" : "ny",
                "ID" : "xyz"
        },  
        {
                "name" : "Jane",
                "address" : "dc",
                "ID" : "pqr"
        } 
    ]
    

    关于ios - 匹配单击的 TableView 行(字符串)以找到对应的唯一 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802020/

    相关文章:

    ios - 使用两个不同的 XIB 查看 Controller ......棘手

    objective-c - 存储应用程序范围的实例

    ios - 带有标题 View 的 UITableView 不滚动到顶部

    iphone - 我可以轻松地将 tcmportmapper 移植到 iOS 吗?

    iphone - UIImage 旋转时质量下降

    ios - UITableViewController 中的 UITableView 行分隔符关闭了吗?

    ios - 更改 UITableView 删除图像 swit

    ios - NSPredicate 比较数字问题

    ios - 在 Swift 中为 PageViewController 创建 UICollectionView 数组

    ios - openFrameworks/freeimage.a 导致 ios arm 64 错误