2

我尝试在 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 获取的结果。

4

3 回答 3

3

调试时试试这个,我们需要发送 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];  

      }  
于 2014-11-19T07:00:18.317 回答
2

@import UIKit;在你的 .h 文件中,你会没事的。

于 2017-02-10T09:07:52.413 回答
0

以供将来参考,我刚刚收到此错误,它与indexPath

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

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

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

于 2015-07-02T02:18:45.520 回答