iOS App Development Overview

Posted on Posted in iOS, Swift

I haven’t blogged in awhile and I don’t know why Friday night at 11 PM seemed like a good time but here we go.

I haven’t been able to write much about the progress I am making professionally because I am just so darn busy. My son was just born and I am on the verge of releasing my first app to the iOS market. It’s a companion app to our web based platform for SDS management.

My primary background is in PHP backend work (which the API the app connects to is built in with Slim) and Javascript front end work. Moving to and adding iOS development to my repertoire has been fun and rewarding with some headaches and a slight learning curve at the beginning. I finally had an aha moment 4 weeks into about a 6 week project and I thought I would share some things I have noticed.

  • The Swift language can be frustrating. If you are not used to optionals, get ready to learn. It forces you to declare variables. Strict typing! It’s not easy to convert from one type to another (even number types) and if you are not sure if a variable will contain a value, it can be optional.
  • OMG optionals! They frustrate me to no end. If you have an optional value and you KNOW it contains a value, you can implicitly unwrap the optional. If the whole purpose of this is to beef up security, why give the programmer the ability to hang himself. Make him check for nil everytime!
  • All this talk about optionals is really just a way for Swift to declare nil (or null as I like to call it)
  • I really wish type conversion was quietly done as in PHP but that’s just my frustration showing coming from a loosely typed language.
  • You will spend more time working in IB, making outlets and actions, working with constraints, storyboards, segue controllers, etc… than you will spend anytime coding. I have spent more time fiddling with that than writing any code. The IB will write a lot of the code for you. Take advantage
  • Get you a good tutorial. Work your way through the basic concepts and what all the different features of the IB are and then dive in. Most of the tutorials are basic but can help you get started. And if you jump right in to Swift 3 just know that most of the function names and signatures have been changed drastically (for the better IMO) but just be ready. Documentation is light out there but once you figure it out, I am sure you will have your AHA moment.
  • Lastly, the emulators are awful and there are some things they just can’t do. For instance, part of my app is to use the camera to scan codes. Register your phone with the correct signatures, etc… and build straight to the phone. The build to the phone is faster than the emulator and will give you a real test device to see if the items really do look like the IB. Even better if you have different versions.

I have had a blast learning something new. I am hoping to get things cleaned up and have my first app out 1Q 2017. It’s very basic with some QR scanning functionality. A login function with remember me that uses the phone’s personal data. It makes calls to backend APIs and fills in custom UI table view cells. There are over 1/2 dozen views. It wasn’t an MMO game by any stretch but it also wasn’t one page. And done in about 6 weeks. You can do it if you are just getting started particularly if you have other programming experience. Good luck!