This is a companion discussion topic for the original entry at https://www.raywenderlich.com/17493408-your-first-ios-and-swiftui-app-an-app-from-scratch/lessons/26
This is a companion discussion topic for the original entry at https://www.raywenderlich.com/17493408-your-first-ios-and-swiftui-app-an-app-from-scratch/lessons/26
During this challenge, I wanted to try to do it without using multiplication. (i did the course a year ago with iOS 13, and wanted to go through it again to see the differences which has been great!)
I dug into the Int area of the Developer Documentation and found negate() in the “Performing Calculations” section. I came up with this:
func points(sliderValue: Int) → Int {
var difference: Int = self.target - sliderValue
if difference < 0 {
difference.negate()
}
var awardedPoints: Int = 100 - difference
return awardedPoints
}
It runs, and does the expected calculations, which made me really happy. Would this be something y’all would recommend against doing for this app, or is it just another solution?
@jnubz That’s a cool idea to try the course again to see what’s changed - hopefully you see a lot changed this year! :]
And that’s great you tried some creativity in your solution by trying out negate
! That’s definitely a fine solution, and if you keep watching in this course I’ll show you another one that’s even fewer lines of code using abs
.
When you’re developing apps, from a high level point of view the most important part is that your code works without bugs (which applies to any of these solutions, including yours)!
Once you’ve got that down, you can begin to optimize for things like fewer lines of code, readability, clean architecture, etc. And that often can be a matter of debate between developers on what’s best :]
Thanks Ray! So far it’s been great to redo the course with all of the improvements that have been added in Swift and SwiftUI from iOS 13 to 14. I did appreciate that abs
made it even more concise.
Thanks for the response.
my solution was simply use absolute
func points(sliderValue: Int) -> Int {
return 100 - abs(target - sliderValue)
}
Great approach! Using negate()
to explore alternatives to multiplication is an interesting idea. I’m also curious how this method might apply to an Age Calculator or other calculations.
Revisiting documentation always reveals useful insights. What differences did you notice between iOS 13 and the latest version?