This is the first in a series of blog posts chronicling the journey through creating my very first iOS app. I’m hoping it will entertain, inform, and maybe even inspire you to take the plunge and write an app yourself.
I have always wanted to make apps for the iPhone. Even as a little boy growing up in the 80’s, I knew that one day, I would build an iPhone app. Well, maybe not my entire life but definitely by the time I bought my first iPhone, I thought to myself, “I should write something for this that I would use.”
Fast forward to today, I have an amazing employer that supplies me with training resources, industry expertise, and an entire mobile practice team to lean on for guidance. Add to that my 12+ years of software development experience in the SharePoint realm and a Mac with the latest version of Xcode installed and I feel like I’m finally ready to build my first iOS app!
Reinventing the Wheel
Coming up with an original idea for an app seems (or actually is?) impossible. Give it a try… pick any type of app that comes to mind, do a quick search in the Apple store and tell me you don’t see dozens of results! Seeing completed versions of the app you’re just thinking about writing is demoralizing and frustrating.
I fell into this trap with some of my earlier app ideas. I went through the apps in the app store in hopes of “getting inspired”. I looked at the screenshots, read the reviews, and analyzed what features they provided. I told myself that I’d make an app that is better than all those apps. That I’d make something that combines all the best features of those apps and comes out on top. I was getting ahead of myself and I gave up before I even started.
I have to remind myself that this is my first app. It’s not going to be the best. In fact, it’ll probably be my worst. It doesn’t really matter what the app does; it’s just an exercise, something to learn on. I’m going to write my app without looking at the apps that are already out there. I’m going to design the app in the way that I would like to use it. Then once I’m happy with what I’ve made, maybe then I’ll check out the app store and see how others have handled the problems I encountered. Maybe when I’m out of features to make, I’ll look at the other apps. Until then, I don’t want others’ design to pollute mine. I don’t want to reinvent the wheel.
I’m the youngest of three kids. I have a brother who is an accountant and a sister that teaches grade school, so I thought to myself why not make an app that teaches people about finances!?! Okay… maybe that inspiration was a stretch, but I’ve always been interested in money management and I’ve always kept a budget, so why not make an app that takes care of personal finances. It’s personal, relevant to me and something that I know I’d use.
I plan to build my app in a basic, traditional way so that it will be relatively simple for me to create and also simple for people to use. At a high level, the app will have a number of features, including:
Fixed expenses tracking: mortgage/rent, insurance, parking etc.
Variable expenses tracking: groceries, gas, utilities, etc.
Pie chart of expenses
Cash flow tracking – line graph of how much money is in your account over the next 60 days
Net Worth (today and historical) display
I decided to tackle the feature list from top to bottom, following a demo on Pluralsight and using Xcode to get started quickly and build screens in a logical way. I built out the first few screens and got the navigation back and forth working, but quickly realized that I had no idea how iOS persisted data. Of all the demos and tutorials I had watched, they had never saved or loaded any data. As expected however, a quick Google scan pointed me toward two great options: Core Data and Realm.
When you create your app for the first time in Xcode, it asks if you’d like to use Core Data. Following what I’d seen in the tutorials, I left this option un-checked. During DevFacto’s last quality conference, I reached out to Kim Shoute for help. Kim is one of our talented iOS developers here at DevFacto. She showed me how to add in the support for Core Data after the app had already been created. She also showed me how to define the data structure and how to interact with the data once the app was running – very cool!
Now here’s where it get fun: Kim didn’t have much experience with Realm, so that’s what I decided to use to build my app. It’s important to learn new things on your own, bring a new skill-set to the table both personally and for our teams. Furthermore, the Realm option intrigued me a little and experimenting with something new is fun, right?
Stay tuned for my next post, Part 2: Development Continues. If you have any questions about development or just want to chat about your own app-building experience, give me a shout at email@example.com Good luck!