核心数据:在强制字段上保存失败,但应设置值!

Tim*_*van 2 iphone core-data

我有一个抽象实体Block,它包含两个属性:columnorder(它们不是可选的)和一个关系thing,其中它是1-> M的细节.我有另一个实体,Whatever它有Block父元素,并添加了一个属性someNumber.

我的代码看起来像这样:

Whatever *block = (Whatever *)[NSEntityDescription insertNewObjectForEntityForName:@"Whatever" inManagedObjectContext:managedObjectContext];
block.order = 0;
block.column = 0;
block.thing = self.thing;
Run Code Online (Sandbox Code Playgroud)

当我尝试保存时,我收到此错误:

Failed to save to data store: Operation could not be completed. (Cocoa error 1560.)
DetailedError: {
  NSLocalizedDescription = "Operation could not be completed. (Cocoa error 1570.)";
  NSValidationErrorKey = column;
  NSValidationErrorObject = <Whatever: 0x5124890> (entity: someWhatever; id: 0x511b4e0 <x-coredata:///Whatever/t718B63A4-927B-4D88-A9E6-7F61CF9621675> ; 
  data: {
    column = nil;
    thing = 0x54367a0 <x-coredata://E6648244-E5FC-4202-B5F9-C7A91BACF8DA/Thing/p2>;
    order = nil;
    someNumber = 0;
  });
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它说,columnordernil,正如我之前设置它们的线,所以这不应该是一个问题.

我也试过使用这种[block setColumn:0]风格,没有成功.

任何帮助,将不胜感激.谢谢!

ger*_*ry3 5

您将它们设置为nil,因为nil只是一个null或零指针值.

必须将Core Data属性设置为对象(而不是基本类型).

整数和浮点数是NSNumber对象.

我喜欢使用numberWith*convenience构造函数.

例如:

block.order = [NSNumber numberWithInteger:0];
block.column = [NSNumber numberWithInteger:0];
Run Code Online (Sandbox Code Playgroud)