检查CoreData属性是否为空

C.J*_*hns 10 iphone core-data ios

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

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

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

更新:

我刚刚在CoreData框架中找到了这个方法,我一直在阅读,虽然试图抓住这个.不确定它是否会有所帮助..你们觉得怎么样?

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

  • (void)willAccessValueForKey:(NSString*)key参数key其中一个接收者属性的名称.讨论请参阅didAccessValueForKey:了解更多详情.您可以使用键值nil调用此方法以确保已触发故障,如以下示例所示.

[aManagedObject willAccessValueForKey:nil];

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

Jod*_*ins 11

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

如果我理解正确,您不希望看到实体是否存在,而是实体内的属性.所以,我假设你将它标记为可选属性.

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

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"MyEntity"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"rawData = nil"];
NSArray *results = [managedObjectContext executeFetchRequest:fetchRequest error:0];
Run Code Online (Sandbox Code Playgroud)

  • 您始终可以通过将其设置为非可选来阻止某人创建具有空属性的对象.或者,您可以构建监视数据库更改的对象,并在具有空间nil/non-nil属性值时将对象添加/删除到全局列表. (3认同)