Iphone CKQueryOperation获取最后一条记录
我需要拿到cloudkit中的最后一张唱片。这是我的密码:Iphone CKQueryOperation获取最后一条记录,iphone,xcode,icloud,cloudkit,ckquery,Iphone,Xcode,Icloud,Cloudkit,Ckquery,我需要拿到cloudkit中的最后一张唱片。这是我的密码: CKContainer *container = [CKContainer containerWithIdentifier:containerID]; CKDatabase *publicDatabase = [container publicCloudDatabase]; CKQuery *query = [[CKQuery alloc] initWithRecordType:recordType
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中的最后一条记录
我非常感谢您的帮助您可以在创建数据上进行升序排序,然后只需请求1个这样的结果(代码是Swift): 添加排序:
query.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
限制结果:
queryOp.resultsLimit = 1
Objective-C版本
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO];
query.sortDescriptors = @[sortDescriptor];
有一项记录:
queryOp.resultsLimit = 1;
设置resultsLimit似乎对我不起作用,但是无论如何都要设置它,并使用时间戳或记录创建日期对结果进行排序。然后将结果存储在数组中,并根据排序顺序使用第一个或最后一个项目
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];
结果限制似乎对我没有影响