检查Core Data managedObject中的多个nil值?

时间:2014-09-17 14:25:54

标签: ios core-data if-statement nsmanagedobject nsmanagedobjectcontext

在保存之前,我需要检查nil中是否有managedObjectContext个值。在那一刻,我正在使用if语句对每个键进行测试。我的NGLS实体中有很多属性,因此您可以看到测试nil值的每个键似乎不太实用。

if ([_managedObjectNGLS valueForKey:@"q1"] == nil){
    [_managedObjectNGLS setValue:@"" forKey:@"q1"];
}
if ([_managedObjectNGLS valueForKey:@"q1More"] == nil){
    [_managedObjectNGLS setValue:@"" forKey:@"q1More"];
}
....

// Save managedObject
NSError *error;
[[self.managedObjectNGLS managedObjectContext] save:&error];
NSLog(@"%@", self.managedObjectNGLS);
NSLog(@"Data saved");

通常会有很多nil个值,我需要使用多个if statements手动更改这些值。有没有办法批量测试我的实体中的所有对象的nil值?如果是这样,有没有办法立即用集合string替换所有这些?感谢。

1 个答案:

答案 0 :(得分:2)

核心数据包含强大的capabilities for validation。作为保存的一部分,Core Data验证对象属性,确保只保留有效对象。

您可以通过在托管对象子类上实现Core Data Model Editor,在key-value validation或代码中实现验证规则。

例如,使用模型编辑器,您可以将属性设置为非可选属性并提供默认值:

Non optional with default