如何使用coredata每次从表中获取10条记录

时间:2017-02-08 12:13:26

标签: ios swift core-data

我想从数据库中获取10条记录。一旦获取了前10条记录,下次我想使用coredata从数据库中获得另外10条记录。

同样想要处理条件如下 - 如果表中少于10条记录如何处理此结果,则在最后获取一些记录。

4 个答案:

答案 0 :(得分:6)

我认为很多答案足以让您理解,我只是上传我的工作案例&确保fetchOffSet对于第一个请求&然后根据您的要求动态

最初申报&初始化col-*

<强>目标C

NSInteger fetchOffSet = 0;

<强>夫特

-(NSMutableArray *)getCountryFromDB:(NSInteger)fetchOffSet {

NSMutableArray *_record = [[NSMutableArray alloc] initWithCapacity:0];

   NSManagedObjectContext *_context =[self getManagedObjectContext];
   NSFetchRequest *_fetchRequest = [[NSFetchRequest alloc]init];
    _fetchRequest.fetchLimit = 10;
   _fetchRequest.fetchOffset = fetchOffSet;

   NSEntityDescription *_entityDesc =[NSEntityDescription entityForName:@"Country" inManagedObjectContext:_context];
    [_fetchRequest setEntity:_entityDesc];

    NSError *_error;
    NSArray *_fetchedOjects = [_context executeFetchRequest:_fetchRequest error:&_error];

   for(int i=0;i<[_fetchedOjects count];i++) {
       Country *_country = [_fetchedOjects objectAtIndex:i];
       [_record addObject:_country];
    }
   return _record;
}


- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{

// UITableView only moves in one direction, y axis
CGFloat currentOffset = scrollView.contentOffset.y;
CGFloat maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;

// Change 50.0 to adjust the distance from bottom
if (maximumOffset - currentOffset <= 50.0) {
     if(_yourCoreDataRecordArray.count > 10){
             fetchOffSet = fetchOffSet + 10;
            NSMutableArray *array = [self getCountryFromDB:fetchOffSet];

         }        
    }
}

答案 1 :(得分:3)

为了处理分页,我正在考虑你正确地提取数据,

在提取请求时执行此操作&amp;从您的代码处理偏移量

// for 1st time first request
request.fetchOffset = 0;
request.fetchLimit = 10;

// for 2nd time second request
request.fetchOffset = 10;
request.fetchLimit = 10;

答案 2 :(得分:0)

只需将这两个属性添加到fetchrequest对象

即可
nsfetchrequest.fetchLimit = 10
nsfetchrequest.fetchOffset = 10 // this will be changed for every new call 

让我详细告诉你,fetchLimit属性用于告诉核心数据请求应返回的最大对象数(记录) 并且fetchOffset会跳过一组给定的结果。如果将偏移量设置为2,则结果中不会返回前两个结果。

有关详细信息,请参阅文档:

http://www.learncoredata.com/how-to-fetch-data/

干杯

答案 3 :(得分:-1)

请实现这一点我希望它的工作

select 123856812 as n,
       to_char(123856812, 'FML000G000G000G000', 
                          'nls_numeric_characters=.\, nls_currency=\') as str
from   dual
;