To add an overall rating, we need to pull all of the reviews from Core Data, add them all together, and get an average. Let's add a new method to our Core Data manager to handle this. Please add the following inside CoreDataManager.swift
:
func fetchRestaurantRating(by identifier:Int) -> Float { let reviews = fetchReviews(by: identifier).map({ $0 }) let sum = reviews.reduce(0, {$0 + ($1.rating ?? 0)}) return sum / Float(reviews.count) }
In this method, we fetch all of the reviews for a restaurant by their ID. Then, we use the reduce
method to add them all together, and then finally we calculate the average. Now let's use this newly created method. Open up RestaurantDetailViewController.swift
. Under our selectedRestaurant
variable add the following:
let manager = CoreDataManager()
Next, under the createRating()
method, we just set our rating to 3.5
stars. Update this method to the following:
func createRating() { if let id = selectedRestaurant?.restaurantID...