NSPredicate与核心数据不返回数据

时间:2013-01-15 22:22:14

标签: ios core-data nspredicate

当自己使用以下NSPredicates中的任何一个时,它们会按预期返回数据。但是,当我进行复合搜索时,不会返回任何内容。我的搜索有什么不对?我正在使用NSFetchRequest

搜索Core Data
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"File"];

NSPredicate *rootPredicate = [NSPredicate predicateWithFormat:@"fileWithContents.entityFolderRoot.object_id == %@", self.product.iqid];
NSPredicate *pathPredicate = [NSPredicate predicateWithFormat:@"fileWithContents.path == %@", self.currentFolder.path];

NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:pathPredicate, rootPredicate, nil]];

request.predicate = rootPredicate;
[self performFetchWithRequest:request];

1 个答案:

答案 0 :(得分:0)

查看谓词中的属性名称,似乎您的数据结构可能不必要地复杂。为什么表示文件(File)的实体与另一个文件(fileWithContents)具有一对一的关系,除了path属性之外,它与另一个实体之间存在另一个一对一的关系某种文件夹(entityFolderRoot),作为唯一ID。

实际上,path属性和文件夹根关系似乎描述了类似的东西(某种容器),也许是同一件事。这必将导致意想不到的结果。

考虑重新设计数据模型。