为什么CoreData只返回20条记录?

时间:2017-01-02 06:49:55

标签: ios objective-c core-data

我在我的应用程序中使用CoreData。一切都工作正常,除了coredata总是返回最多20条记录,虽然我有超过50条记录。我一次又一次地检查了我的代码,但没有找到确切的原因。我也没有使用 fetchLimit 属性。请帮助我。

感谢。

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:entityName inManagedObjectContext:_manager.managedObjectContext];
[fetchRequest setEntity:entity];

NSSortDescriptor *sortDescriptor = nil;
if (key != nil) {
    sortDescriptor = [[NSSortDescriptor alloc] initWithKey:key ascending:ascending];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
    [fetchRequest setSortDescriptors:sortDescriptors];
}

NSError *error = nil;
NSMutableArray *array = [[_manager.managedObjectContext executeFetchRequest:fetchRequest error:&error] mutableCopy];
return array;

2 个答案:

答案 0 :(得分:1)

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSInteger rowCount = [context countForFetchRequest:fetchRequest error:&error];
fetchRequest.fetchLimit = rowCount;
NSArray *allItems = [context executeFetchRequest:fetchRequest error:&error];

此处rowCount将计算所有行的实际数量,您可以将其设置为fetchLimit

答案 1 :(得分:-1)

核心数据默认返回20条记录。您可以使用setFetchLimitNSFetchRequest来设置记录限制。

NSFetchRequest* request = [[NSFetchRequest alloc] init];
[request setEntity:[...]];
[request setFetchLimit:50];