我使用Core Data數據庫。 我有實體相冊,有很多實體SpecificImage(獲取這些圖像的集合的關鍵是@「specificImages」) 我想獲取id = 1的相冊,並通過id對附加的SpecificImages進行排序。 我試圖NSSortDescriptor對多關係
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"specificImages.id" ascending:YES];
,但我得到的錯誤
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'to-many key not allowed here'
這裏是我的代碼:
NSString *entityName = kEntityName;
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];;
NSManagedObjectContext *context = appDelegate.managedObjectContext;
NSEntityDescription *entityDesctiption = [NSEntityDescription
entityForName: entityName
inManagedObjectContext:context];
// find object
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"id == %d", CurrentCategoryItemID];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"specificImages.id" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
[request setEntity:entityDesctiption];
[request setPredicate:predicate];
NSArray *objects = [context executeFetchRequest:request error:nil];
[request release];
if (objects == nil)
{
NSLog(@"there was an error");
return;
}
else if ([objects count] == 0)
{
return;
}
NSManagedObject *object = [objects objectAtIndex:0];
它拋出一個異常,當我嘗試執行的NSArray *對象= [背景executeFetchRequest:request error:nil];
我想對附加圖片進行排序,但不要對圖片進行排序然後返回相冊。所以我應該使用類似[NSSortDescriptor sortDescriptorWithKey:@「specificImages.id」升序:YES]; –
specificimages是一個nsset對象..所以沒有id ..並且在fetchRequest中添加一個sortdescriptor通過比較所有結果對象中的th鍵的值來對結果數組進行排序。 –
我所做的是最好的解決方案對於你的問題..還有一個效率更低的解決方案..這將不包括fetchRequest中的任何sortdescriptors ..或者你可以獲取你想要的專輯,然後訪問它的specifcimages nsset並將值分類到你的願望 –