简单的NSPredicate @“1 == 0”没有过滤取得的结果?

时间:2012-09-01 09:45:20

标签: objective-c ios nspredicate nsfetchedresultscontroller

此代码有什么问题?

我知道这是一个愚蠢的谓词。但它只是表明,如果这是有效的,它应该过滤掉一切,对吗?

不知何故,事实并非如此。我正在获取我的数据库中的每个月份对象,而我什么时候都没有。

我想这告诉我问题可能不在谓词中吗?

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

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Month" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];

[fetchRequest setPredicate: [NSPredicate predicateWithFormat:@"1 == 0"]];

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"month_" ascending:YES];

    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor1, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setFetchBatchSize:20];

NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                    managedObjectContext:managedObjectContext
                                      sectionNameKeyPath:@"month_"
                                               cacheName:@"Root"];



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [[_fetchedResultsController sections] count];
}

我真正想做的是,

[NSPredicate predicateWithFormat:@"year.year_ == %d", year]

我也试过了,

[NSPredicate predicateWithFormat:@"month_ == %d", 1]

看它是否有效。但没什么。

编辑:

此时,无论我设置什么谓词,只要它是一个有效的,格式良好的谓词。它没有抱怨,并得到了我所有的对象。它只是没有过滤任何东西。

我几乎使用Apple的文档中的锅炉板代码。

任何人都可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果使用缓存,则应在删除之前删除fetchRequest的缓存。

调用deleteCacheWithName:解决了问题。