Say you are doing something critical to the app’s usability at startup (like copying the SQLite DB or setting up CoreData) and something goes wrong that doesn’t cause a crash but you don’t want the user to continue. What can you do?
Currently my app has abort() and NSAssert(false,...) calls to make sure the app doesn’t continue, obviously after the error has been logged. But somehow I think its not going to score points with Apple on the app store.
Anyone have any ideas what I can do in such situations? I understand for instance that if there is no connectivity you can put your app in ‘offline’ mode but lets say the DB couldn’t be properly setup (for argument sake). There is no ‘offline’ for that and so the user cannot continue. The user needs to quit the app and try again or report the problem. Wouldn’t you agree, or am I missing something?
I just decided to create a view that has a message on it explaining to the user that a critical error has occurred and explained some steps to follow to resolve it. It prevents the user from using the app until it is resolved. So if the DB is missing or the model schema doesn’t match the DB schema it will bring up that view.
Its one way of doing it that I took. If anyone has a different way, I’d like to hear it.