我尝试在" didSelectRowAtIndexPath"的帮助下获取项目的行ID。在iOS中。 代码:
- (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获取的结果。
答案 0 :(得分: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];
}
答案 1 :(得分:2)
在你的.h文件中只需#import <UIKit/UIkit.h>
,你就可以了。
答案 2 :(得分:0)
为了将来参考我刚收到此错误,它与indexPath
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//...
Task *task = [self.tasks objectAtIndex:indexPath.row];
//...
return cell;
}
我的错误是self.tasks
填充了NSDictionary
而不是任务对象。
所以,至少在我的情况下,错误是误导性的,如果没有其他工作可能会检查类型分配。