核心数据输入数字 > 1.0 错误
Core Data inputting numbers > 1.0 error
我正在编写一个日志应用程序,该应用程序使用核心数据来存储主题数据(应用程序的外观)等内容 - 直到最近我更改了很多代码时它才有效。我现在在尝试将浮点数导入托管对象模型时遇到一个问题,如果该浮点数 > 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,表示某些数值太大。它为 barRed
、barGreen
和 barBlue
值生成此值..
请帮忙!
我猜您的 Core Data 模型中有一个约束。除了数据类型,您还可以设置默认值以及 minimum 和 maximum 值。我认为您可能已将其配置为介于 0 和 1 之间。更新模型中的验证规则,一切都会好起来的。
可以在数据模型检查器中找到这些选项:
我正在编写一个日志应用程序,该应用程序使用核心数据来存储主题数据(应用程序的外观)等内容 - 直到最近我更改了很多代码时它才有效。我现在在尝试将浮点数导入托管对象模型时遇到一个问题,如果该浮点数 > 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,表示某些数值太大。它为 barRed
、barGreen
和 barBlue
值生成此值..
请帮忙!
我猜您的 Core Data 模型中有一个约束。除了数据类型,您还可以设置默认值以及 minimum 和 maximum 值。我认为您可能已将其配置为介于 0 和 1 之间。更新模型中的验证规则,一切都会好起来的。
可以在数据模型检查器中找到这些选项: