首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CKQueryOperation获取最后一条记录

CKQueryOperation获取最后一条记录
EN

Stack Overflow用户
提问于 2014-12-02 03:31:16
回答 3查看 1.3K关注 0票数 3

我需要获取cloudkit中的最后一条记录。下面是我的代码:

代码语言:javascript
复制
 CKContainer *container = [CKContainer containerWithIdentifier:containerID];
    CKDatabase *publicDatabase = [container publicCloudDatabase];
    CKQuery *query = [[CKQuery alloc] initWithRecordType:recordType
                                               predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
     CKQueryOperation *queryOp = [[CKQueryOperation alloc] initWithQuery:query];

    queryOp.desiredKeys = @[@"record.recordID.recordName"];
    queryOp.recordFetchedBlock = ^(CKRecord *record)
    {
        //do something
    };

     queryOp.queryCompletionBlock = ^(CKQueryCursor *cursor, NSError *error)
    {
        NSLog(@"CKQueryCursor  error %@", error);
    };

    queryOp.resultsLimit = CKQueryOperationMaximumResults;
    [publicDatabase addOperation:queryOp];

我的问题是,如何修改代码以获得cloudkit中的最后一条记录?

我将非常感谢你的帮助

EN

回答 3

Stack Overflow用户

发布于 2014-12-02 04:05:08

你可以按创建日期升序排序,然后像这样要求1个结果(代码在Swift中):

添加排序:

代码语言:javascript
复制
query.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]

限制结果:

代码语言:javascript
复制
queryOp.resultsLimit = 1
票数 4
EN

Stack Overflow用户

发布于 2014-12-02 07:00:55

Objective-C版本

代码语言:javascript
复制
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO];
query.sortDescriptors = @[sortDescriptor];

对于一条记录:

代码语言:javascript
复制
queryOp.resultsLimit = 1;
票数 1
EN

Stack Overflow用户

发布于 2016-11-22 08:58:31

设置resultsLimit似乎对我不起作用,但是无论如何都要设置它,并使用时间戳或记录创建日期对结果进行排序。然后将结果存储在数组中,并根据排序顺序使用第一项或最后一项

代码语言:javascript
复制
    CKContainer *container = [CKContainer containerWithIdentifier:containerID];
    CKDatabase *publicDatabase = [container publicCloudDatabase];
    CKQuery *query = [[CKQuery alloc] initWithRecordType:recordType predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO];
    query.sortDescriptors = @[sortDescriptor];

    CKQueryOperation *queryOp = [[CKQueryOperation alloc] initWithQuery:query];
    queryOp.desiredKeys = @[@"record.recordID.recordName"];
    queryOp.recordFetchedBlock = ^(CKRecord *record)
    {
        //do something
        recordArray.append(record)
    };

    queryOp.queryCompletionBlock = ^(CKQueryCursor *cursor, NSError *error)
    {
        NSLog(@"CKQueryCursor  error %@", error);
        let myLastRecord = recordArray[recordArray.count - 1]
    };

    queryOp.resultsLimit = CKQueryOperationMaximumResults;
    [publicDatabase addOperation:queryOp];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27235774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档