I recently sended out an update of my app. Now I got some complaints from people who says that the app is always crashing. When I check it on the simulator and on device everything works properly.
Now my question is, has this something to do with my update.
Maybe this has something to do with my core database that I'm using or maybe something else?
Hope that anybody can tell me what the problem is?
Impossible to answer.
Log in to iTunes Connect and download the Crash Reports. You might be able to find the answer there.
Assuming you manage your code properly then you should have a version handy which is exacly that what you sent to the store last time. Install that on your device. Run it. Then upgrade your own device and debug it.
Have you performed an upgrade on your own devices?
Without knowing more from your crash reports this could be a CoreData migration issue (or lack of migration). If you changed your data model between versions you should have made sure a migration is performed (either automatically, or using a migration mapping).
If you did not do this the app will crash because of an managed object model vs. underlying database incompatibility error.
Read the Core Data Model Versioning and Data Migration Guide for more information on this.
Related
someone please explain when should I increase the xcdatamodeld version? I google a lot, there are all about migration, but when should I increase the version?
Currently if I make change in my xcdatamodeld such as add entity or add attribute, I will recreate nsmanagedobject subclass. But I am not sure what situation that I have to increase the xcdatamodeld version.Please someone explain it. Thanks!
I think of it as a tool for helping users of my app migrate from the previous data model to the new data model. So I don't bump the version up unless I have to "release" it in some fashion (app store, or internal testers). Even then, if I have a small group of testers, I may just tell them to delete and reinstall so that I don't have to muck with it.
If a user with the old data model installs your app update with a new data model, they will crash unless you instruct the data model to "migrate".
Hi I struck at core data migration issue. I have developed a app which is new version of an existing app in Appstore. But i don't have source code of previous version and don't know exactly that whether core data was used in old version or not. So how to update my app (which has core data) to Appstore without any crashes. Any quick solution please?
Since you mention in a comment that you want to ignore the old data, you don't need to do any kind of migration. Model migration is about updating existing data to work with a newer data model. The only danger would be if the old app used Core Data and your new app attempts to use a persistent store file with the same file name. Then your app would attempt to load the old data, since it would find that file with the correct name.
The easiest way to test this is:
Install the existing app (from the app store)
Use this app until you're sure it's saving some data
Install the new version from Xcode. Since it's an upgrade, it will overwrite the app store copy.
By then you'll know exactly what happens when upgrading. If you get a Core Data related crash, change your Core Data setup to use a different filename. Then delete the app from your iOS device and repeat the test from above.
I created a core data model that was working fine until I added a new entity to the model, my code is fine I think... because Xcode can't detect any errors, but as soon as I run my app on the simulator the compiler gives me an error saying
reason=The model used to open the store is incompatible with the one used to create the store
I don't quite understand what this error means. I did search for references regarding this error but the one I found is outdated it was from Xcode 3.2, I'm currently running Xcode 7.1.1, interestingly enough there's no check mark on none of the replies. Despite that I still tried to use some of those methods and nothing has worked.
Things I tried
Resetting iOS Simulator -> Reset Contents and Settings...
Deleted the [Simulator App Folder]/Document/*.sqlite and ran the project
Have you had the same problem? If so can you help me troubleshoot it? Thanks.
That error means that you changed the model so that it doesn't match the one you were using when you created the app's data. It's the classic sign of changing a data model and not either doing model migration or deleting the app from the phone/simulator (and it's been pretty much the same as long as Core Data has existed, so old information is not irrelevant). Deleting the app from the simulator would normally be all that's needed to run the app again. If it's not working, then you're somehow leaving old data in place.
The best way to delete an app from the simulator is usually the same as you'd delete an app on a real device-- click and hold until the app icon starts moving, then click the "x" on its icon to delete it.
If deleting the app doesn't help, you're using old data some other way. Maybe you have some pre-loaded data built into the app that was configured using an old version of the model?
My favorite solution is to open the sqlite database with a third party app, then open the Z_MetaData table and delete the row found in there.
Works like a charm every time.
It may affect your 'migration' if you do migrations.
We do not, so not an issue.
Trying to integrate my app with Facebook for login proposes, i've happened to notice the following log line:
2014-01-07 15:22:08.843 Nutrino[7457:70b] FBSDKLog: The FacebookSDKResources.bundle is no longer required for your application. It can be removed. After fixing this, you will need to Clean the project and then reset your simulator.
The problem is FacebookSDKResources.bundle is not even existing in my FacebookSDK directory. So basically this log message is redundant for me.
Normally i won't care much, but this log message is popping into my log console 3 times in a raw each time i'm instantiating FBLoginView.
Been looking around and saw this answer which state that the guy is probably getting this error after having upgraded to a newer version of Facebook SDK. Unfortunately i'm not upgrading. I started a new project from scratch so i don't have any reference to safely remove from the app project.
Any suggestions? How can i get rid of these annoying log messages
Thanks in advance.
Gil
UPDATE
Ok - I've found out the source of the problem!!
I'm developing my app in xCode5.. Once in a while I open an older version of xCode with an older version of the app for some code references, so the problem happens when both projects are opened simultaneously.
The FacebookSDKResources.bundle does exists on the older version of the project and this is the cause!
Hope it'll helps someone.
original answer
I'm not really sure if this is what solved it, since I left it as it was for a while and the next time I checked those log messages weren't there, but the only thing I do remember changing was the fact the I made my FBLoginView instance a singleton, so there was only one instance of it.
Worth the shot if anyone is dealing with the same issue.
I added an attribute to a Core Data model (iOS). I was on version 2, so I added a new model and saved the new attribute under version 3.
My loading code is standard (initializing a MOM using initWithContentsOfURL: pointing at my .momd directory inside my bundle), then passing that MOM to a NSPersistentStoreCoordinator.
Then, I download my app from the App Store, run it, and then try to test the migration. Lightweight migration is working fine on my Simulator and my phone in Debug (tethered to Xcode 4).
However, when I sync a Release build (using the "Archive" feature on Xcode) using iTunes, my app's data store fails to migrate with this error:
Error Domain=NSCocoaErrorDomain Code=134130 "The operation couldn’t be completed.
(Cocoa error 134130.)", reason=Can't find model for source store}
Worse yet, the store gets lost in some voodoo state where it cannot escape - if I re-tether the device and install a Debug build from Xcode again, I can't "recover" the migration.
The error message above omits the details about my entities. I can provide that if helpful, but any ideas on what might be wrong here? I've read just about every question on SO about this error code and so far all of them have failed to produce a result.
I tried a manual migration, but it also yielded an error. However, since I only added 1 attribute to 1 entity, it doesn't make sense that lightweight migration isn't working.
Every time I've seen this problem, in my code or someone else, it has been XCode getting into some kind of bad state with regards to the model versions it deploys in the application. Open the Release IPA archive of your app, and look at what mom files are in it. If you see one of the previous versions missing, that is likely this same problem. As for a solution, I've had mixed results; some variation of the following steps works for me, but never in a consistent order.
Clean & delete the derived data for the project (make sure you have an archive of your released app saved so you can symbolicate if necessary)
Rename the previous model version files (in xcode), adding or removing the space between the name and the digit representing the version number (if it has a space, replace with '_', if it doesn't have a space try adding one)
Add a new version of the model, without changing any of it's content, and make it the 'current' version
I know these steps seem like grasping at straws, which is exactly what it feels like whenever this happens to me. You might consider using one of your support incidents with Apple, it would be nice to know what their official answer to this issue is.