【问题标题】:Check if CoreData attribute is empty检查 CoreData 属性是否为空
【发布时间】:2012-04-25 23:24:42
【问题描述】:

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

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

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

更新:

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

willAccessValueForKey:提供对key-value观察访问的支持 通知。

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

[aManagedObject willAccessValueForKey:nil];

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

【问题讨论】:

    标签: iphone ios core-data


    【解决方案1】:

    该通知是关于何时访问该值。

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

    假设您有一个名为 rawData 的二进制数据属性。如果你想在数据库中找到所有没有为这个属性设置任何数据的@"MyEntity"对象,你可以发出这个获取请求。

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

    【讨论】:

    • 好的很酷..谢谢你。它只是有点担心,因为我已经读过向许多 fetch 请求发出是一件很淘气的事情.. :P
    • 您始终可以通过将其设为非可选来防止某人创建具有空属性的对象。或者,您可以构建监控数据库更改的对象,并在具有空间 nil/non-nil 属性值时将对象添加/删除到全局列表中。
    猜你喜欢
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2014-08-22
    • 2014-01-14
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    相关资源
    最近更新 更多