Search code examples
ioscore-dataiphonecoredatarecipes

Core data crash immutable object


Why does this crash?

CategoryOfExpense *newCatEx = (CategoryOfExpense *) [NSEntityDescription entityForName:kCategoryOfExpense inManagedObjectContext:moc];
newCatEx.name = self.nameTextField.text; <- crashes here
newCatEx.icon =  [NSData dataWithData:UIImagePNGRepresentation(self.iconImageView.image)];

The error is:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Can't modify an immutable model.'

Solution

  • You are calling entityForName:inManagedObjectContext: which returns a NSEntityDescription. That would be the definition of the entity, like how you described it in the GUI when you built the model.

    I believe what you want is insertNewObjectForEntityForName:inManagedObjectContext: which will create a new NSManagedObject of the entity.