Курс 2 Урок 43 Проблема с сохранением рейтинга

xcode

#1

Пытаюсь сделать задание по добавлению рейтинга с помощью кордаты. Вроде бы все получилось сделать, вот только рейтинг постоянно сбрасывается, даже если не перезапустить приложение, а простой перейти с одно ресторана на второй. Помогите пожалуйста если кто то разберется


#2

проект


#3

В RestaurantDetailViewController во viewDidLoad выставите картинку у кнопки:

if let rating = restaurant?.ratingSmile {
    rateButtom.setImage(UIImage(named: rating), for: .normal)
}

Передайте Restaurant в RateViewController:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "mapSegue" {
        let dvc = segue.destination as! MapViewController
        dvc.restaurant = self.restaurant
    } else if let raetVC = segue.destination as? RateViewController {
        raetVC.restaurant = restaurant
    }
}

В RateViewController в зависимости от нажатой кнопки присвойте значение ratingSmile:

@IBAction func rateRestaurant(sender: UIButton) {
        let context = (UIApplication.shared.delegate as! AppDelegate).coreDataStack.persistentContainer.viewContext
        switch sender.tag {
        case 0: restaurant?.ratingSmile = "bad"
        case 1: restaurant?.ratingSmile = "good"
        case 2: restaurant?.ratingSmile = "brilliant"
        default: break
        }
        try? context.save()
        performSegue(withIdentifier: "unwindSegueToDVC", sender: sender)
}

В RestaurantDetailViewController в методе unwindSegue обновите картинку у кнопки:

@IBAction func unwindSegue(segue: UIStoryboardSegue) {
    guard let rating = restaurant?.ratingSmile else { return }
    rateButtom.setImage(UIImage(named: rating), for: .normal)
}

#4

Спасибо большое! это нормально что после просмотра 43 уроков, я не смог это сам сделать? или надо где нибудь знания еще приобрести?))


#5

Знания приобретать нужно всегда, на счёт нормальности сложно ответить, у каждого она своя :slight_smile: