Я использую следующее создать ссылку на контроллер представления в моем коде, как это:ошибка кодирования Значения ключа при использовании prepareForSegue
-(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
но я получаю следующую ошибку
, и я не уверен, почему. Я пытаюсь передать местоположение в индекс ячейки, выбранной в UITableView. Если лучший способ, пожалуйста, дайте мне знать. Почему я получаю эту ошибку?
ТНХ
ТНХ для редактирования - был кто-то разговаривает со мной – timpone
Sure! FWIW, я обнаружил, что я делаю меньше ошибок, когда предпочитаю объектные свойства c для кодирования ключа. Например, если вы импортировали класс и пытаетесь присвоить значение этому классу, который не отображается, компилятор сообщает вам. Вы не понимаете, что при использовании строковой строки keyPaths setValue: forKeyPath: принимает. – geraldWilliam