当自己使用以下NSPredicates中的任何一个时,它们会按预期返回数据。但是,当我进行复合搜索时,不会返回任何内容。我的搜索有什么不对?我正在使用NSFetchRequest
搜索Core DataNSFetchRequest *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];
答案 0 :(得分:0)
查看谓词中的属性名称,似乎您的数据结构可能不必要地复杂。为什么表示文件(File
)的实体与另一个文件(fileWithContents
)具有一对一的关系,除了path
属性之外,它与另一个实体之间存在另一个一对一的关系某种文件夹(entityFolderRoot
),作为唯一ID。
实际上,path属性和文件夹根关系似乎描述了类似的东西(某种容器),也许是同一件事。这必将导致意想不到的结果。
考虑重新设计数据模型。