ChronoCat 3.1 on the Way!

No posts or ChronoCat updates for months? That’s super lame….

Well all that is about to change, ChronoCat 3.1 is on the way! The next ChronoCat update will include the option to set a color for your events instead of just the default blue that the app has now.

More info and screenshots coming very soon 😀

ChronoCat 3 Submitted to the App Store!

Alright! ChronoCat 3.0 is finally done and has been submitted to the App Store for review. Very happy to have this update out the door. Transitioning from an iPhone-only app to a universal one took a bit longer than I had hoped but it’s done now. 

What was the hardest part of the changing to a universal app? So many damn screenshots to take now ><

Anyway, once approved ChronoCat will be free for one more week or so and then after that it will be .99¢ going forward. Thanks so much for everyone who has downloaded the app so far and especially those who have paid to remove the ads. 


Three Ways to Quantify Your Progress Building an App

I’ve been working on ChronoCat for about 10 months now and sometimes it’s fun to stop and quantify that progress. It’s easy to check how many times the app has been downloaded but what about measuring your personal progress and milestones?  Here are a few of the ways I keep track of how far I have come while building ChronoCat:

  1. Lines of code – You can count the lines of code in your own Xcode project by running this snippet I found on StackOverflow in your app’s project folder. ChronoCat is purely Objective-C so I removed the C++ bits from the snippet, here is what it looks like for me:   find . “(” -name “*.m” -or -name “*.h”  “)” -print0 | xargs -0 wc 
  2. Git commits – Git has a handy commit count command built right in: git shortlog -sn
    If you have multiple branches in your git repository add the –all switch to include them. 
  3. How much time has passed – For counting the time I use (drumroll please) ChronoCat! Just make a new event with your product’s creation date and you’re done.

Here are stats for ChronoCat 2.5:

  1. Just over 4000 lines (Version 1.0 weighed in at about 950 lines of code)
  2. 123 commits
  3. Started 258 days ago



ChronoCat 2.5 Coming Soon

Alright! ChronoCat 2.5 has been submitted to the App Store for review. This update includes: 

* A redesigned detail view to better show off your event’s picture. (Screenshot below)

* A new “auto” option for counting time by will automatically scale the unit of time up or down. (e.g. years until -> months until -> weeks until -> days until -> day of -> days since-> weeks since -> months since -> years since)

* Various formatting and bug fixes.



Finally Done! ChronoCat 2.3 Submitted for Review

All right, ChronoCat 2.3 has finally been submitted for review. Here is the final list of all the new stuff it contains:

Add reminders to your events to let you know when they are approaching, the day of, or the anniversary of a past event 

You can now include a location with your events 

*Edit Events! 
Now you can edit an event after creating it 

*New look! 
The add event and view event screens have been given a new look and feel 

*New Help Section! 
There is now an FAQ section accessible via the settings menu with instructions on how to create events, delete events, and more 

Fewer 😀

ChronoCat 2.3 Coming Soon!

Huge update coming soon for ChronoCat, here is what is going to be included in version 2.3:

  • Reminders! Now you can add a push notification reminder when you create a new event.
  • Event Locations! Include a location with your events.
  • New look for the add event and view event screens including new date pickers and parallax event images!
  • Bug fixes!!!

Wow, so many exclamation points, I feel like Lewis Black telling jokes over here! 

How to Mess Up Your First In-App Purchase Submission

When adding an in-app purchase(IAP) to your app for the first time, be sure to follow the instructions provided by Apple closely. Make sure to dot your i’s and cross your… vision over the large warning at the top of the screen that says you must attach your first IAP to a new version of your app. This means it needs to be added after you create a new version in itunesconnect but _before_ you upload the binary for review. 

I thought the pending status on my IAP meant it would just automatically be reviewed with my app during its next update. Wrong! On top of that screwing up your first IAP is not grounds for an expedited review so will have to wait another full review cycle to fix your broken IAP (which was only about 4 days in my case so not a huge issue). In the interim I just threw a bug warning into my app’s “What’s new” section that IAP didn’t work and a fix was on the way. 

Here are some great articles from Apple that include step by step instructions on how to not mess your first IAP up like I did:
1. Adding In-App Purchase to your iOS and OS X Applications
2. Submitting your first in-app purchase product

How to Transition an Existing App to Core Data

The initial structure of my app ChronoCat was super simple: Just one custom class, all objects from that class are thrown into an array, that array is displayed by a table view and is written/read from disk as needed. Here is the basic process I used to migrate the app away from objects-in-an-array to Core Data:

  1. Make a Core Data entity to represent my custom class.
  2. Added all the @propertys from my custom class as attributes to the new entity. (@propertys only at this point, methods come later) .
  3. Make the NSManagedObject Subclass of my new Core Data model.
  4. Make a category for my NSManagedObject Subclass to store any methods I had in my custom class.

Now that the swap from a custom object to Core Data was complete the last step was to create a class to import the user’s existing data into the new Core Data model. Here is what I did for that:

  1. Made a new group in Xcode and added the old custom class used in the initial version of ChronoCat to it. The new version of my app is a complete rewrite so the old class file was not already in the project.
  2. In that same group I added a new class to put all my import code in.
  3. The import process is to check for the old data file in the app’s document folder, if found load the data from binary back into an NSArray, then use a for loop to cycle through the objects in the array and save them as a new NSManagedObjects.
  4. Once that’s done clean up by deleting the old data file.

The whole process was shockingly painless and has been a great way to get my feet wet with Core Data. The new version of ChronoCat that utilizes Core Data is currently in review and will hopefully be approved and available soon.

ChronoCat 2.0 Coming Soon

I am very excited to be finally submitting my 2.0 update for ChronoCat to Apple today!

This update includes a brand new interface and icon along with the ability to remove ads via an in-app purchase. A majority of the changes in this update are actually all under the hood changes that I will dive into more in a follow-up post. 

In the meantime, while I am waiting for Apple to approve the update, feel free to take a look at the new ChronoCat homepage to see how its going to look.