如果CoreData属性为空,我希望找到一种检查方法。属性本身是二进制数据类型。如果属性为空,那么我可以告诉我的类下载并将一些数据保存到此属性中。
根据CoreData文档,您不应该继续查看对象是否存在。我想知道是否有可能做到这一点的方法?没有打破这个'法律'?
这是我第一次尝试使用CoreData。我之后将它添加到我的代码中,这稍微有些痛苦,但到目前为止,一切似乎都没问题。我只需要找出一种检查属性是否具有值的逻辑方法。如果没有,那么我需要下载并保存新数据,如果有,那么我只使用属性中的内容。
更新:
我刚刚在CoreData框架中找到了这个方法,我一直在阅读,但试图抓住这个。不确定它是否会有所帮助..你们有什么想法?
willAccessValueForKey:为键值观察访问提供支持 通知。
- (void)willAccessValueForKey:(NSString *)key参数key其中一个接收者属性的名称。讨论见 didAccessValueForKey:了解更多详情。您可以调用此方法 密钥值为nil,以确保故障被触发,如 由以下例子说明。
[aManagedObject willAccessValueForKey:nil];
不确定..我不理解的是为键值观察访问通知提供支持。 ???
答案 0 :(得分:11)
该通知适用于何时访问该值。
如果我理解正确,您不希望看到实体是否存在,而是实体中的属性。因此,我假设您将其标记为可选属性。
假设您有一个名为rawData的二进制数据属性。如果要查找数据库中没有此属性的任何数据集的所有@“MyEntity”对象,则可以发出此获取请求。
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rawData = nil"];
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:0];