0

次のNSPredicateのいずれかを単独で使用すると、期待どおりにデータが返されます。ただし、複合検索を実行しても何も返されません。私の検索の何が間違っていますか?NSFetchRequestでコアデータを検索しています

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];
4

1 に答える 1

0

述語の属性名を見ると、データ構造が不必要に複雑になっているようです。ファイル ( ) を表すエンティティFileが別のファイル ( fileWithContents) と対 1 の関係を持つのはなぜですか。このファイルは、属性に加えて、一意の ID としてpathある種のフォルダー ( ) を記述する別のエンティティと別の対 1 の関係を持つことになります。entityFolderRoot

確かに、path 属性とフォルダー ルートの関係は、似たようなもの (ある種のコンテナー) を記述しているように見えますが、おそらく同じものです。これは、予期しない結果につながるはずです。

データ モデルの再設計を検討してください。

于 2013-01-16T01:17:18.327 に答える