【问题标题】:core data dynamic predicate: passing data?核心数据动态谓词:传递数据?
【发布时间】:2014-04-27 10:45:29
【问题描述】:

这是我的场景: 我有一个“相机”表视图和一个“卷”表视图。我想点击一个相机并加载它的相应卷。我似乎无法让它工作。将选定的相机核心数据对象传递到滚动表视图 NSFetchedResultsController 的谓词中的正确方法是什么?

相机实体

关系:滚动

目的地:滚动

逆向:没有逆向

滚动实体

关系:相机

目的地:相机

逆向:没有逆向

来自滚动表视图控制器

- (NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
    return _fetchedResultsController;
}

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
                               entityForName:@"Roll" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sort = [[NSSortDescriptor alloc]
                          initWithKey:@"desc" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];

[fetchRequest setFetchBatchSize:20];    

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY camera == %@", self.selectedCamera.objectID];
[fetchRequest setPredicate:predicate];

NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                    managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil
                                               cacheName:nil];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;

return _fetchedResultsController;
}

【问题讨论】:

  • 您是否定义了cameraroll 之间的关系?
  • @Flexicoder 我已经用关系编辑了问题

标签: ios iphone uitableview core-data nspredicate


【解决方案1】:

你们的关系应该有一个逆向关系(在这种情况下,是相互逆向的)。这允许 Core Data 正确管理关系,并允许您在双向导航时方便地设置它。它也恰当地代表了这种关系。

谓词应该是:

NSPredicate *p = [NSPredicate predicateWithFormat:@"camera == %@", self.selectedCamera];

Roll 实体上使用camera 关系并检查它是否包含提供的self.selectedCamera 实体实例。

【讨论】:

  • 好的。我已经更正了我的实体关系和谓词。我想这是我问题的第一部分。第二个是,将点击的相机对象传递给轧辊台控制器的推荐方式是什么?
  • 转场?您可以像填充相机表一样获取对象,将其传递给准备 segue 或创建滚动视图控制器时。
  • 谢谢。你甚至不想知道我是如何尝试的
  • 在这种情况下,并非如此,因为您在问题中显示了代码,表明您付出了努力,而您的附加问题并不大:-)
  • 不,我在开玩笑说我试图传递对象的荒谬方式:-)
猜你喜欢
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 2013-08-05
  • 2015-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
相关资源
最近更新 更多