检查 CoreData 属性是否为空



我希望找到一种方法来检查CoreData属性是否为空。属性本身的类型为二进制数据。如果该属性为空,那么我可以告诉我的类下载并将一些数据保存到此属性中。

根据 CoreData 文档,您不应该继续获取以查看对象是否存在。我想知道是否有办法做到这一点?不违反这个"法律"?

这是我第一次尝试使用CoreData。之后我将其添加到我的代码中,这稍微痛苦一些,但总的来说,到目前为止,一切似乎都很好。我只需要找出一种检查属性是否有值的逻辑方法。如果没有,那么我需要下载并保存新数据,如果是,那么我只使用属性中的内容。

更新:

我刚刚在 CoreData 框架中找到了这种方法,尽管我一直在阅读它,尽管试图对此有所突破。不确定它是否有帮助..你们怎么看?

willAccessValueForKey:支持键值观察访问 通知。

  • (void)willAccessValueForKey:(NSString *)key Parameters key 接收方属性之一的名称。讨论 见 didAccessValueForKey:了解更多详情。你可以调用这个方法 键值为 nil,以确保已触发故障,如 由以下示例说明。

[aManagedObject willAccessValueForKey:nil];

真的不确定..我不明白的事情是 为键值观察访问通知提供支持。 ???

该通知适用于何时访问该值。

如果我理解正确,您不想查看实体是否存在,而是实体中的属性。 因此,我假设您已将其标记为可选属性。

假设您有一个名为 rawData 的二进制数据属性。 如果要查找数据库中所有没有此属性数据集的 @"MyEntity" 对象,请发出此获取请求。

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rawData = nil"];
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:0];

最新更新