Быстрая передача данных между VCS

#ios #uitableview #core-data #swift

#iOS #uitableview #core-данные #swift

Вопрос:

я новичок в Swift, и я хотел бы знать, почему этот фрагмент кода, который я перевел с Obj-C, здесь не работает.

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "scoreDetail" {
            let indexPath = self.tableView.indexPathForSelectedRow()
            let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as NSManagedObject

            let itemVC: ScoreVC = segue.destinationViewController as ScoreVC
            itemVC.detailItem = object
        }
    }
  

Вот раскадровка. У меня есть Show Replace переход от ячейки к UINavigatorController
введите описание изображения здесь

Я получаю эту ошибку, как только нажимаю на UITableViewCell

введите описание изображения здесь

Ответ №1:

Проблема не имеет ничего общего со Swift. destinationViewController — это контроллер навигации, а не ваш ScoreVC, поэтому код, с которого вы его перевели, также не должен был работать (если у него были те же настройки). Это должно выглядеть следующим образом,

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "scoreDetail" {
            let indexPath = self.tableView.indexPathForSelectedRow()
            let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as NSManagedObject

            let nav : UINavigationController = segue.destinationViewController
            let itemVC: ScoreVC =  nav.topViewController as ScoreVC
            itemVC.detailItem = object
        }
    }
  

Комментарии:

1. вы абсолютно правы, я только что заметил эту вещь! Большое вам спасибо