My app crashes when I add a new entity to the core data model in my iOSapp

Ok so I was looking for a way to store data to persistent storage in my app. Since I am building an HTML5 app, my first solution was to store data using the now deprecated WebSql database (indexedDB was only introduced in iOS 8!).  Now i had the basic data storage going and then I realised some of the storage limitations in the WebSql database, so I began searching for another solution and during that search I met Core Data!! It was almost like love at first sight, it had all the storage awesomeness that I was after. Since there was so much love, I just wanted to build something and see how it works. So I followed an online tutorial rather than reading Apple's documentation on it, what I did was,  I added an entity to my core data model and wrote the logic to store data and it was all working! So now my app could store and retrieve data from a persistent data source without the storage limitation imposed by WebSql in a webView. It was all going great and thanks to Core Data both my app and I were in a land of blue skies and sunshine :)

Now that I had something that was saved/retrieved with Core Data, I felt I should refine my solution and actually add all the entities that my app needs. So I added a few entities to my data model and re-deployed my app to the device and BANG!!! The app crashed and I was no longer in the land of blue skies and sunshine. Why? In a nutshell, I needed to pay attention to what is described in Core Data Model Versioning and Data Migration. While I do not have a full solution on this yet, but from what I understand, it is about your app knowing what version of the data model it is dealing with. So say you deploy version one of your app with entities Person and Vehicle, and then you add another entity called Animal and re-deploy your app to a device it will crash. Since the app is not expecting to find an Animal i.e. Animal entity. One way in which the app would work with the new added entity, is if you delete it from the device and re-deploy/install it.

I may post more details on versioning with Swift once I know more and I cannot find a better tutorial for it. But till then, the Apple documentation should be very insightful and also this tutorial looks handy.

Comments

Popular posts from this blog

Upload to AWS S3 from Java API

Addressing app review rejections for auto-renewing subscription in-app purchase (iOS)

Getting started with iOS programming using Swift (Part 1)