发送到解除分配的实例的表视图didSelectRowAtIndexPath:
消息时出错。使用本地Web服务,它运行良好。但它不适用于实时网络服务。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
TreasureModel *data=[[TreasureModel alloc]init];
data=[self.treasureData objectAtIndex:indexPath.row];
treasureID=[NSString stringWithFormat:data.Id];
}
TreasureModel
包含两个字段:Id
和name
。
TreasureData
拥有TreasureModel
的对象。
答案 0 :(得分:0)
为了便于阅读,我将这个发布到答案而不是评论。
看来didSelectRowAtIndexPath:
的唯一目的是将data.Id
存储到treasureID
中。它看起来treasureID
是iVar
类型的NSString *
。
您没有说明TreasureModel.Id
类型是什么类型,因此这里有NSString
和NSInteger
的变体。
如果TreasureModel.Id
为NSString *
,您可以使用:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
TreasureModel *data=(TreasureModel *)[self.treasureData objectAtIndex:indexPath.row];
treasureID=[NSString stringWithString: data.Id];
}
如果是NSInteger
,请尝试:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
TreasureModel *data=(TreasureModel *)[self.treasureData objectAtIndex:indexPath.row];
treasureID=[NSString stringWithFormat: @"%d",data.Id];
}
如果这不起作用,我们将不得不在代码中找到问题所在。