Book Image

Learn iOS 11 Programming with Swift 4 - Second Edition

By : Craig Clayton
Book Image

Learn iOS 11 Programming with Swift 4 - Second Edition

By: Craig Clayton

Overview of this book

<p>You want to build iOS applications but where do you start? Forget sifting through tutorials and blog posts, this book is a direct route into iOS development, taking you through the basics and showing you how to put the principles into practice. So take advantage of this developer-friendly guide and start building applications that may just take the App Store by storm!</p> <p>Whether you're an experienced programmer or a complete novice, this book guides you through every facet of iOS development. From Xcode and Swift, the building blocks of modern iOS development, you'll quickly gain a solid foundation to begin venturing deeper into your development journey. Experienced programmers can jump right in and learn the latest iOS 11 features.</p> <p>You'll also learn advanced topics of iOS design, such as gestures and animations, to give your app the edge. Explore the latest developments in Swift 4 and iOS 11 by incorporating new features, custom-rich notifications, drag and drop features, and the latest developments in SiriKit. With further guidance on beta testing with TestFlight, you'll quickly learn everything you need to get your project on the App Store!</p>
Table of Contents (36 chapters)
Title Page
Copyright and Credits
Packt Upsell
Contributors
Preface
Free Chapter
1
Getting Familiar with Xcode
Index

Adding an overall rating 


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...