我试图找到我的简单问题的答案,没有运气......我正在研究CoreData,我有两个实体让我们举一个“照片和摄影师”的例子一对多的关系,意味着一个摄影师可以有多个照片......现在我用
存储了对象[NSEntityDescription insertNewObjectForEntityForName...]
我在检索特定摄影师的“所有照片”时遇到问题。我正在使用此代码
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Photographer"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"name = %@",@"photographerName"];
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"timeStamp" ascending:YES]];
这段代码正在回归摄影师,但我只需要这位摄影师拍摄的所有照片。 我是CoreData的新手,我不确定我是否应该使用“照片”实体?
提前感谢。
答案 0 :(得分:0)
您的获取请求应该请求Photo
实体。
然后,在你的谓词中,你可以像这样指定摄影师的名字:
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"photographer.name = %@",@"photographerName"];
或者更好的是,首先获得摄影师对象,然后在谓词中测试关系会快得多:
Photographer* photographer = ... //Get required photographer here
fetchRequest.predicate = [NSPredicate predicateWithFormat:@"photographer = %@", photographer];
答案 1 :(得分:0)
使用此选项对photographer.photos
数组进行排序。
NSSortDescriptor *sortKey = [[NSSortDescriptor alloc] initWithKey:@"timestamp" ascending:YES];
NSArray *sorters = [NSArray arrayWithObject:sortKey];
NSArray *sortedArray = [photographer.photos sortedArrayUsingDescriptors:sorters];