检查Core Data属性是否为空

时间:2012-04-25 23:24:43

标签: iphone ios core-data

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

根据CoreData文档,您不应该继续查看对象是否存在。我想知道是否有可能做到这一点的方法?没有打破这个'法律'?

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

更新:

我刚刚在CoreData框架中找到了这个方法,我一直在阅读,但试图抓住这个。不确定它是否会有所帮助..你们有什么想法?

  

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

     
      
  • (void)willAccessValueForKey:(NSString *)key参数key其中一个接收者属性的名称。讨论见   didAccessValueForKey:了解更多详情。您可以调用此方法   密钥值为nil,以确保故障被触发,如   由以下例子说明。
  •   
     

[aManagedObject willAccessValueForKey:nil];

不确定..我不理解的是为键值观察访问通知提供支持。 ???

1 个答案:

答案 0 :(得分:11)

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

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

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

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