Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Core Data Save Error (NSValidationErrorKey, Cocoa error 1570) saving NSDate

I'm getting an error with saving to a Core data object in Xcode.

Xcode says that the error is in the NSDate variable 'datum' but I have tried almost everything. Error is:

2011-07-12 18:01:29.068 WeekLijstje[3205:207] Core Data Save Error NSValidationErrorKey    datum NSValidationErrorPredicate  (null)  NSValidationErrorObject <DagLijst: 0x6e2fcd0> (entity: DagLijst; id: 0x6e2fd30 <x-coredata:///DagLijst/t99F423FC-AAE9-4692-9264-EF0FF7A020572> ; data: {     Voedsel = nil;     datum = nil;     hoeveelheid = 0;     punten = 0; }) NSLocalizedDescription:The operation couldn’t be completed. (Cocoa error 1570.) 

A small code snipet:

        DagLijst *newDaglijst = [NSEntityDescription insertNewObjectForEntityForName:@"DagLijst" inManagedObjectContext:self.managedObjectContext];          NSDate *selDatum = [NSDate date];         newDaglijst.punten = [NSNumber numberWithInteger:10];         newDaglijst.hoeveelheid = [NSNumber numberWithInt:100];         newDaglijst.Voedsel = geselecteerdVoedsel;         newDaglijst.datum = selDatum;         NSError *error = nil;         if (![newDaglijst.managedObjectContext save:&error]) { ... 

Also the class of the DagLijst object:

@interface DagLijst : NSManagedObject { @private } @property (nonatomic, retain) NSDate * datum; @property (nonatomic, retain) NSNumber * punten; @property (nonatomic, retain) NSNumber * hoeveelheid; @property (nonatomic, retain) Voedsel *Voedsel;  @end 

So you can see that I put an NSDate into the 'datum' variable. But on execution I still get an error.

like image 803
Peter Avatar asked Jul 12 '11 16:07

Peter


2 Answers

The cocoa error 1570 means that mandatory fields are not filled in. In this case, your have two attribues that are nil : Voedsel and datum.

I see in your code :

newDaglijst.Voedsel = geselecteerdVoedsel; newDaglijst.datum = selDatum; 

Check that geselecteerdVoedsel and selDatum are not nil or that they are overreleased and finish to be nil. If they are optional data (but I don't think so), define them as optional in coredata.

Hope this help,

like image 111
Michael A. Avatar answered Sep 28 '22 01:09

Michael A.


as Michael A said. Check your attributes value are not nil. There are 2 alternatives to get rid of these error. Case 1:If 2 attributes are Required

If the 2 attributes are required attributes then it is mandatory to check the values you are passing are not nil,It may happens sometimes,If u want to get out of these error u have to give default values for those attributes in attributes inspector of your Entity in data Model

Case 2: Set those attributes to optional in attribute inspector by selecting the check mark of optional.

Me too struggled for days to know these error. Hope it helps someone.

like image 25
skkrish Avatar answered Sep 28 '22 03:09

skkrish