iOS NSPredicate通过父实体过滤核心数据
问题描述:
所以我迷失在这一个。我正在尝试使用谓词获取父对象的子对象。如果我取出谓词线,它会返回所有特定的帖子。所以我非常肯定它与谓词有关的一个问题。任何帮助将不胜感激!以下是我的设置。iOS NSPredicate通过父实体过滤核心数据
AccountTimeLine - > SpecificPosts(一对多)
核心数据模型:
读取的结果控制器:
- (void)specificPostFetch
{
DataAccessLayer *delegate = [[DataAccessLayer alloc]init];
self.managedObjectContext = delegate.managedObjectContext;
NSString *entityName = @"SpecificPosts";
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"createdDateSort" ascending:YES]];
request.predicate = [NSPredicate predicateWithFormat:@"accountTimeLine = %@", self.accountTimeLineObject];
[request setFetchBatchSize:20];
self.specificPostFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
self.specificPostFetchedResultsController.delegate = self;
[self.specificPostFetchedResultsController performFetch:nil];
}
打印出是accountTimeLineObject的用于比较谓词
po self.accountTimeLineObject
<AccountTimeLine: 0x7c087b70> (entity: AccountTimeLine; id: 0x7c086590 <x-coredata://353F201D-E739-4DD0-BEBF-DAD6101CFE51/AccountTimeLine/p72> ; data: {
accountType = 0;
nextPageUrl = 515986477864337411;
sort = 0;
specificPosts = "<relationship fault: 0x7c634590 'specificPosts'>";
userAccountId = 582;
})
答
尝试把==在你的谓语,而不是单一=:
request.predicate = [NSPredicate predicateWithFormat:@"accountTimeLine == %@", self.accountTimeLineObject];
是啊,我尝试过这一点。不会改变任何东西。不确定这些谓词中是否存在==和=之间的差异?我也尝试添加ObjectId像这样“request.predicate = [NSPredicate predicateWithFormat:@”accountTimeLine ==%@“,[self.accountTimeLineObject objectID]];”那也没用。任何其他想法? – mikemike396 2014-09-28 00:15:49
你有错误,或者只是一个空数组? – pbasdf 2014-09-28 00:19:06
当我在cellForRow上放置一个断点时,空结果控制器。当我注释谓词行时,我返回了40个对象。 (lldb)po [self.specificPostFetchedResultsController.fetchedObjects count]; –
mikemike396
2014-09-28 00:21:02