0

通常我们像这样使用 NSPredicate:

NSPredicate *matchName = [NSPredicate predicateWithFormat:
                             @"firstName == %@",@"Miraaj"];

有没有什么可以实现这样的:

NSPredicate *matchNameHash = [NSPredicate predicateWithFormat:
         @"hash(firstName) == %@",hash(@"Miraaj")];

IE。它将在匹配属性值的哈希值后过滤记录。

4

1 回答 1

1

根据Predicate Programming Guidehash ,核心数据/SQLite 中没有可用的功能。

无论如何,实体的什么属性应该是hash?在 Core Data 中,您应该使用与具有属性的其他实体的关系,而不是“哈希”。你需要的是类似

[NSPredicate predicateWithFormat:
        @"hashProperty.name = %@", localNameHash[@"Miraaj"];

假设您想比较某个“Person”实体的所有属性(您使用的是名字),您可以像这样检查持久存储中是否存在您的子类的实例

[NSPredicate predicateWithFormat:
        @"person = %@", miraajPersonObject];
于 2013-01-21T14:12:39.203 回答