核心数据输入数字> 1.0错误

时间:2015-05-30 11:43:45

标签: ios cocoa cocoa-touch core-data nsnumber

我正致力于编写一个日志应用程序,该应用程序使用核心数据来存储主题数据(应用程序的外观) - 直到最近我改变了大量代码时才开始工作。我尝试将浮点数导入托管对象模型时遇到问题,如果该浮点数是> 1.0f。当我也将这些相同的值切换为使用整数时,如果大于1,它们也无法工作。任何人都可以了解最新情况吗?

代码:

    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,表示某些数值太大。它为barRedbarGreenbarBlue值生成此值。

请帮忙!

1 个答案:

答案 0 :(得分:1)

我猜你的核心数据模型中有一个约束。除数据类型外,您还可以设置默认值以及最小最大值。我认为您可能将其配置为介于0和1之间。更新模型中的验证规则,一切都应该正常。

可以在数据模型检查器中找到选项:

Xcode Data Model Inspector