在 iOS 表格视图中的“NSIndexPath *”类型的对象上找不到属性“行”

Posted

技术标签:

【中文标题】在 iOS 表格视图中的“NSIndexPath *”类型的对象上找不到属性“行”【英文标题】:property 'row' not found on object of type 'NSIndexPath *' in iOS tableview 【发布时间】:2014-11-19 06:34:14 【问题描述】:

我尝试在 ios 中借助“didSelectRowAtIndexPath”获取项目的行 ID。 代码:

   - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  

      indexPathRow=indexPath.row;  

      self.recordIdToEdit = [[[deviceNameArray objectAtIndex:indexPath.row] objectAtIndex:0] intValue];  
      NSLog(@"Item selected..%d", self.recordIdToEdit);  

     [self performSegueWithIdentifier:@"DetailsViewController" sender:nil];  

    

在调试时我得到以下 po 错误:

 (lldb) po [deviceNameArray objectAtIndex:indexPath.row]  
 error: property 'row' not found on object of type 'NSIndexPath *'  
 error: 1 errors parsing expression  
 (lldb) po indexPathRow  
 <nil>  

这里出了什么问题? deviceNameArray 是一个字符串数组,其中包含从 sqlite db 获取的结果。

【问题讨论】:

【参考方案1】:

调试时试试这个我们需要发送int值

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath  

         int index=indexPath.row;  

          self.recordIdToEdit = [[deviceNameArray objectAtIndex:index]];  
          NSLog(@"Item selected..%d", self.recordIdToEdit);  

         [self performSegueWithIdentifier:@"DetailsViewController" sender:nil];  

        

【讨论】:

是的,我用字符串值对象而不是 int 搞砸了【参考方案2】:

只需在 .h 文件中添加 @import UIKit; 即可。

【讨论】:

为我工作,但我认为 NSIndexPath 是在 Foundation 中声明的?【参考方案3】:

为了将来参考,我刚刚收到了这个错误,它与indexPath无关

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
//...
   Task *task = [self.tasks objectAtIndex:indexPath.row];
//...
    return cell;

我的错误是 self.tasks 填充了 NSDictionarys 而不是 Task 对象。

所以,至少在我的情况下,错误是误导性的,如果没有其他工作可能检查类型分配。

【讨论】:

以上是关于在 iOS 表格视图中的“NSIndexPath *”类型的对象上找不到属性“行”的主要内容,如果未能解决你的问题,请参考以下文章

表格视图单元格中的图像

在自定义表格视图 ios 中显示按钮

与 UITableView 关联的 NSIndexPath

如何在尝试检索选择的表格单元格时正确实现 - (NSIndexPath *)indexPathForSelectedRow

UITableViewCell子视图的NSIndexPath?

如何保持表格视图中的图像大小一致