核心数据保存错误(NSValidationErrorKey,Cocoa错误1570)保存NSDate
我在保存到Xcode中的Core数据对象时出错。
Xcode说,错误是在NSDatevariables'datum',但我已经尝试几乎所有东西。 错误是:
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.)
小码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]) { ...
也是DagLijst对象的类:
@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
所以你可以看到我把一个NSDate放入'datum'variables中。 但执行中,我仍然得到一个错误。
cocoa错误1570
意味着必填字段没有填写。在这种情况下,您有两个属性,分别是Voedsel
和datum
。
我在你的代码中看到:
newDaglijst.Voedsel = geselecteerdVoedsel; newDaglijst.datum = selDatum;
检查geselecteerdVoedsel
和selDatum
是否为零,或它们是selDatum
,并完成为零。 如果他们是可选的数据(但我不这么认为),在coredata中将它们定义为可选的。
希望这个帮助,
正如Michael A所说。 检查你的属性值不是零。 有2个select摆脱这些错误。 情况1:如果2个属性是必需的
如果2个属性是必需的属性,那么检查你传递的值不是零是必须的,有时可能会发生,如果你想摆脱这些错误,你必须给你属性检查器的属性默认值数据模型中的实体
情况2:通过select可选的复选标记,在属性检查器中将这些属性设置为可选。
我也为挣扎了好几天才知道这些错误。 希望它可以帮助别人。
我从其他xcdatamodeld
文件中复制实体时遇到此问题。 他们失去了逆向的属性,所以这就是原因。
没有真正与date相关,但与错误,我分享它,因为这个问题有更多的意见:
在我的情况下,我直接设置BOOL
属性为YES
或NO
,但是您应该使用
NSNumber numberWithBOOL
为了使它工作。