2015-05-30 21 views
1

我正在编写日志应用程序,它使用核心数据来存储其他内容,主题数据(应用程序的外观) - 直到最近,当我改变很多时的代码。如果该浮点数>1.0f,则在尝试将浮点数导入托管对象模型时,我现在遇到了一个问题。当我也切换这些相同的值来使用整数,他们也失败,如果大于1 ..任何人都可以阐明发生了什么?核心数据输入数字> 1.0错误

代码:

NSManagedObject *ocean = [NSEntityDescription 
           insertNewObjectForEntityForName:@"Colour" 
           inManagedObjectContext:_managedObjectContext]; 
    [ocean setValue:[NSNumber numberWithFloat:3.0f] forKey:@"barRed"]; 
    [ocean setValue:[NSNumber numberWithFloat:101.0f] forKey:@"barGreen"]; 
    [ocean setValue:[NSNumber numberWithFloat:100.0f] forKey:@"barBlue"]; 
    [ocean setValue:[NSNumber numberWithFloat:69.0f/255.0f] forKey:@"backgroundRed"]; 
    [ocean setValue:[NSNumber numberWithFloat:69.0f/255.0f] forKey:@"backgroundGreen"]; 
    [ocean setValue:[NSNumber numberWithFloat:69.0f/255.0f] forKey:@"backgroundBlue"]; 
    [ocean setValue:[NSNumber numberWithBool:NO] forKey:@"selected"]; 
    [ocean setValue:@"Ocean Blue" forKey:@"themeName"]; 

它工作得很好,当我除以255的颜色,你仍然可以看到这些代码行..但我已经决定255分别处所以这个新问题有点痛苦!运行代码时所产生的误差是..

2015-05-30 12:32:59.381 Journal[3991:86301] DetailedError: { 
NSLocalizedDescription = "The operation couldn\U2019t be completed. (Cocoa error 1610.)"; 
NSValidationErrorKey = barRed; 
NSValidationErrorObject = "<Colour: 0x7f9af0f5aea0> (entity: Colour; id: 0x7f9af0f5af50 <x-coredata:///Colour/tAF642E65-FBB9-4589-A6C1-96C239E0E4DA2> ; data: {\n backgroundBlue = \"0.2705882\";\n backgroundGreen = \"0.2705882\";\n backgroundRed = \"0.2705882\";\n barBlue = 100;\n barGreen = 101;\n barRed = 3;\n selected = 0;\n themeName = \"Ocean Blue\";\n})"; 
NSValidationErrorValue = 3; 
} 

我注意到产生的误差码是1610 - 这是一个NSValidationNumberTooLargeError,它表示一些数值过大。它产生这个为barRed,barGreenbarBlue值..

请任何帮助!

回答

1

我猜你在你的核心数据模型中有一个约束。与数据类型一起,您可以设置默认值以及最小值最大值值。我想你可能已经配置为0到1之间。更新模型中的验证规则,一切都会好的。

的选项可以在数据模型中检查发现:

Xcode Data Model Inspector

+0

会在哪里验证规则是什么?我没有故意发送过任何东西,但很可能我不小心做了一些事情! –

+0

我添加了一个截图。 –

+0

你先生是个传奇人物!我总是隐藏着酒吧 - 这会教会我! –