检查 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 中检查重复值的快速方法

如何在 Core Data 中检查给定用户名的密码? [关闭]

Swift - 如何检查现有的 Core Data Store iOS

在 Core Data 中,如何检查错误是不是是由“磁盘已满”引起的?