检查 Core Data managedObject 中的多个 nil 值?
Posted
技术标签:
【中文标题】检查 Core Data managedObject 中的多个 nil 值?【英文标题】:Check for multiple nil values in Core Data managedObject? 【发布时间】:2014-09-17 14:25:53 【问题描述】:我需要在保存之前检查我的managedObjectContext
中是否有任何nil
值。目前我正在使用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
替换所有这些?谢谢。
【问题讨论】:
你的意思是这样的:NSArray *allKeys = @[@"q1", @"q1More", etc.];for (NSString *aKey in allKeys)if ([_managedObjectNGLS valueForKey:aKey] == nil)[_managedObjectNGLS setValue:@"" forKey:aKey];
?
非常适合我的需求,非常感谢!
【参考方案1】:
Core Data 包括强大的capabilities for validation。作为保存的一部分,Core Data 会验证对象属性,确保仅保留有效对象。
您可以在Core Data Model Editor 中实现验证规则,或者您自己在代码中通过在您的托管对象子类上实现key-value validation 来实现。
例如,使用模型编辑器,您可以将属性设置为非可选并提供默认值:
【讨论】:
感谢您的解释和文档链接,这很有帮助!我将把你的答案标记为正确,因为我将使用这个和 Larme 的解决方案的混合物(在array
中使用 for loop
),因为它们都对我的需要有用。再次感谢。以上是关于检查 Core Data managedObject 中的多个 nil 值?的主要内容,如果未能解决你的问题,请参考以下文章
检查 Core Data managedObject 中的多个 nil 值?
检查 NSFetchedResultsController / Core Data 中的现有值
如何在 Core Data 中检查给定用户名的密码? [关闭]