Don’t know how discoverable this would qualify it as, been a while since I setup an Apple product from new, but the Tips app does point people in the direction of it. Under the Essentials section of my phone, the HomePod section too if you’ve got one—I remember being pointed at it during setup—probably more if I went digging. Mac OS X’s Help pages ain’t too bad either when I last looked at them a year or so ago, and the Help menu is in every single application, not useful in all of them kind you, but at least the First party stuff it is.
There’s not been zero effort, but it isn’t completely in your face. That said when I reviewed the help pages, pointed a new Mac user at them and told her to go nuts, she refused to look and forgot that menu was there after a while. How do you solve that? People are either curious or they aren’t, but everything a new user needs is pretty much in there if they’re inclined to learn.
Before Apple decided that PC/handheld programming was only something that should be accessible to the elite most people kept scripts and small utility programs on github.
I applaud the effort and intent, but to be honest I think rookie iOS developers (who I believe are the intended audience) should stay away from most of this guide. Aside from typos and broken links, it also contains little hidden bites of bad practices and misinformation.
Some examples (just going down the readme):
> The observer pattern lets one object observe changes on another object. Apple added language-level support for this pattern in Swift 5.1 with the addition of Publisher in the Combine framework.
- Apple did not add language-level support, the Combine framework is a framework
- You shouldn't fatalError in code intended to be reusable and ready to blindly "copy and paste"
- print(error) doesn't exactly inspire confidence
- Again, plenty of libraries exist for this (and Foundation's FileManager isn't that verbose anyway)
struct User: Codable {
var first_name: String
var last_name: String
var country: String
}
- You should use CodingKeys or JSONDecoder.KeyDecodingStrategy instead of snake_case
- This section would benefit from a concrete example of JSON<->Codable<->JSON
...and so on. I hope I don't come off too critical here, I just think the author would be better off building something more akin to an Awesome list of links to blog posts, as opposed to a single source of truth of surface-level information where where the bar of knowledge is much higher.
Sure. Hacking with Swift [0] is great, CS193P [1] is very good (previous years were UIKit, now it's SwiftUI). Ray Wenderlich [2] and Swift by Sundell [3] are also good resources. The OG was NSHipster [4], but they haven't published much recently (some articles may be a bit outdated). For SwiftUI specifically, Swift with Majid [5] is a godsend and has amazing content. Finally, for learning good Swift language practices, the Swift book [6] is very friendly.
Excellent list of resources. Only addition I'd suggest making to that list would be https://swiftui-lab.com and the companion payware app. No affiliation, just someone who has found the information and large number of readily runnable code examples a huge time saver.
Would add https://useyourloaf.com to your list. Great WWDC summaries, amazing auto-layout content, and just in general one of the better written Swift resources out there. I find things are written in more of a 'production ready' way instead of strictly for a tutorial. Check it out!
You shouldn't fatalError here at all, in any case. If you want to crash on failure, force unwrap the result, it's literally there for exactly this purpose.
25 comments
[ 3.2 ms ] story [ 60.0 ms ] threadThere’s not been zero effort, but it isn’t completely in your face. That said when I reviewed the help pages, pointed a new Mac user at them and told her to go nuts, she refused to look and forgot that menu was there after a while. How do you solve that? People are either curious or they aren’t, but everything a new user needs is pretty much in there if they’re inclined to learn.
I personally thought it was one of them but for iOS
e.g. https://github.com/awesome-selfhosted/awesome-selfhosted
Some examples (just going down the readme):
> The observer pattern lets one object observe changes on another object. Apple added language-level support for this pattern in Swift 5.1 with the addition of Publisher in the Combine framework.
- Apple did not add language-level support, the Combine framework is a framework
- NSNotification center was added in iOS 2.0
> Good To GO- No you're not: what about error handling, permissions, etc.
- There are dozens of libraries for this on Github that do the above and more, why not use them?
- You shouldn't fatalError in code intended to be reusable and ready to blindly "copy and paste"- print(error) doesn't exactly inspire confidence
- Again, plenty of libraries exist for this (and Foundation's FileManager isn't that verbose anyway)
- You should use CodingKeys or JSONDecoder.KeyDecodingStrategy instead of snake_case- This section would benefit from a concrete example of JSON<->Codable<->JSON
...and so on. I hope I don't come off too critical here, I just think the author would be better off building something more akin to an Awesome list of links to blog posts, as opposed to a single source of truth of surface-level information where where the bar of knowledge is much higher.
Edit: forgot https://www.objc.io, definitely one of the best
[0]: https://www.hackingwithswift.com
[1]: https://cs193p.sites.stanford.edu
[2]: https://www.raywenderlich.com
[3]: https://www.swiftbysundell.com
[4]: https://nshipster.com
[5]: https://swiftwithmajid.com
[6]: https://docs.swift.org/swift-book/
I use C/C++ on iOS and I'll abandon the platform if they ever remove the support.