5 ms·
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 gui
by danappelxx 5y ago
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
- NSNotification center was added in iOS 2.0
extension ViewController: ImagePickerDelegate {
func didSelect(image: UIImage?) {
self.yourImageView.image = image
self.dismiss(animated: true, completion: nil)
}
}
> 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?
func getDocumentDirectoryPath() -> URL {
guard let url = useFileHandler.urls(for: .documentDirectory,
in: .userDomainMask).first else { fatalError("Can't find path") }
return url
}
func createFile(resourceName: String, fileExtension: String) {
let fileURLProject = Bundle.main.path(forResource: resourceName, ofType: fileExtension)
let folderUrl = getDocumentDirectoryPath()
let fileUrl = folderUrl.appendingPathComponent("\(resourceName).\(fileExtension)")
do {
try useFileHandler.copyItem(atPath: fileURLProject ?? "", toPath: fileUrl.path)
} catch {
print(error)
}
}
- 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.
- tokamak-teapot 5y agoCan you recommend a good book or other resource as an alternative please?
- danappelxx 5y agoSure. 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. Edit: forgot https://www.objc.io https://www.objc.io, definitely one of the best [0]: https://www.hackingwithswift.com https://www.hackingwithswift.com [1]: https://cs193p.sites.stanford.edu https://cs193p.sites.stanford.edu [2]: https://www.raywenderlich.com https://www.raywenderlich.com [3]: https://www.swiftbysundell.com https://www.swiftbysundell.com [4]: https://nshipster.com https://nshipster.com [5]: https://swiftwithmajid.com https://swiftwithmajid.com [6]: https://docs.swift.org/swift-book/ https://docs.swift.org/swift-book/
- lonelyasacloud 5y agoExcellent list of resources. Only addition I'd suggest making to that list would be https://swiftui-lab.com 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.
- sprkwd 5y agoJust what I needed! Thanks for sharing.
- polutropos 5y agoWould add https://useyourloaf.com 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!