【问题标题】:iphone: NSPredicate problem with NSFetchedResultsControlleriphone:NSFetchedResultsController 的 NSPredicate 问题
【发布时间】:2010-09-30 20:30:43
【问题描述】:

我目前在我的系统中定义了一个“主题”实体:

@interface Topic :  NSManagedObject  
{
}
@property (nonatomic, retain) NSString * path;
@property (nonatomic, retain) NSString * name;
@property (nonatomic, retain) NSNumber * topicID;
@property (nonatomic, retain) NSNumber * parent;
@end

我想使用 NSFetchedResultsController 获取具有特定数字(例如 4001)的主题。我将我的定义为:

- (NSFetchedResultsController *)fetchedResultsController {

    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }

    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Topic" inManagedObjectContext:_context];
    [fetchRequest setEntity:entity];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"topicID == 4100"];
    [fetchRequest setPredicate:predicate];


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

    [fetchRequest setFetchBatchSize:20];

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

    [fetchRequest release];
    [theFetchedResultsController release];

    return _fetchedResultsController;    

}

..没有谓词,FetchedResultsController 工作正常.. 但是,当我添加它时,出现错误并且应用程序崩溃.. 有人可以告诉我我是否错误地定义了我的 NSPredicate 吗?

【问题讨论】:

    标签: iphone objective-c core-data nsfetchedresultscontroller nspredicate


    【解决方案1】:

    尝试将 cacheName 设置为 nil:

    NSFetchedResultsController *theFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:_context sectionNameKeyPath:nil cacheName:nil];
    

    它在类似的情况下帮助了我。

    【讨论】:

      【解决方案2】:

      这样的东西有用吗?

      [NSPredicate predicateWithFormat:@"topicID == %@", [NSNumber numberWithInt:4100]];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多