在 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
填充了 NSDictionary
s 而不是 Task 对象。
所以,至少在我的情况下,错误是误导性的,如果没有其他工作可能检查类型分配。
【讨论】:
以上是关于在 iOS 表格视图中的“NSIndexPath *”类型的对象上找不到属性“行”的主要内容,如果未能解决你的问题,请参考以下文章
如何在尝试检索选择的表格单元格时正确实现 - (NSIndexPath *)indexPathForSelectedRow