gpt4 book ai didi

ios - 使用 prepareForSegue 时键值编码错误

转载 作者:行者123 更新时间:2023-11-28 22:31:48 26 4
gpt4 key购买 nike

我正在使用以下代码在我的代码中创建对 View Controller 的引用,如下所示:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"detailSegue"]){
NSIndexPath *indexPath=[self.tableView indexPathForSelectedRow];
TRDetailViewController *vc=segue.destinationViewController;
vc.item=self.items[indexPath.row];
[vc setValue:self forKeyPath:@"delegate"];
[vc setValue:indexPath.row forKeyPath:@"itemIndex"];
}
}

这是在 TRDetailViewController 中声明的

@interface TRDetailViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *detailLabel;
@property NSString *item;
@property (nonatomic, weak)id delegate;
@property NSInteger itemIndex;
- (IBAction)deleteItem:(id)sender;
@end

但我得到以下错误

enter image description here

我不确定为什么。我正在尝试传递在 UITableView 中选择的单元格的索引中的位置。如果有更好的方法,请告诉我。为什么会出现此错误?

谢谢

最佳答案

setValue:forKey: 期望一个对象作为它的值参数,而你传递给它的是一个原始值(在本例中是一个整数)。您可以通过将方法修改为如下内容来解决此问题:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"detailSegue"]){
NSIndexPath *indexPath=[self.tableView indexPathForSelectedRow];
TRDetailViewController *vc=segue.destinationViewController;
vc.item=self.items[indexPath.row];
[vc setValue:self forKeyPath:@"delegate"];
[vc setValue:[NSNumber numberWithInt:indexPath.row] forKeyPath:@"itemIndex"];
}
}

然后像这样访问它:

[[vc valueForKey:@"itemIndex"] intValue];

关于ios - 使用 prepareForSegue 时键值编码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com