我想显示Project,以便在sharedToUsers的基础上显示所有项目。表示具有User.user_id的部分名称,它应显示该用户的所有共享项目。但我无法正确设置NSFetchedResultsController的节值,因为它是一个太多的关系,它在 sectionNameKeyPath 上崩溃。 任何帮助
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *theParent = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:_managedObjectContext];
//the name key exsit in parent entity of project.
NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
[fetchRequest setFetchBatchSize:10];
[fetchRequest setEntity:theParent];
[fetchRequest setPredicate:_predicate];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:_managedObjectContext sectionNameKeyPath:@"ANY sharedToUsers.user_id"
cacheName:[self getCacheNameForNSFetchedResultsController]];
答案 0 :(得分:0)
如果您有像我一样的Senario,那么当您更改核心数据中的数据时,请尝试不使用使用父对象或类别对象添加或更新关系出货项目。如果你必须将某些东西与类别链接,那么尝试从子对象链接。
不要使用此
[category addRelationShipItem:child];
使用此
`[child addToCategory:category];`
当你使用它时,它不会在NSFetchResultController调用中触发更新调用。
快乐的编码。
答案 1 :(得分:-1)
嗨如果你想要获取用户共享的项目,你需要这个谓词:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *theParent = [NSEntityDescription entityForName:@"Project" inManagedObjectContext:_managedObjectContext];
NSString *userId; // If you user_id is a NSNumber change you to it.
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY sharedToUsers.user_id = %@",userId];
[fetchRequest setPredicate:predicate];
您使用NSSort:姓名的最后一件事,但命名它不是Project属性。