Couldkit 查询和在 CKReference 字段上使用谓词时出现问题
Trouble with Couldkit Query and using predicates on field of CKReference
我对 CKQuery 的工作原理有一个基本的误解。
我有 2 种记录类型:
- 朋友:包含字段
- url_of_profil_pic
- 名字
- ...
- 投票:包含字段
- date_of_vote
- target_of_the_vote(网友CK参考)
- the_one_who_vote(cloudkit 用户 ID)
我只是在想如何在 Vote [=54= 上查询时获得 url_of_profil_pic ]
基本上,想要这样的东西:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"the_one_who_vote = %@", recordReference.recordID];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Votes" predicate:predicate];
query.sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc]initWithKey:@"createdAt" ascending:false]];
CKQueryOperation *operation = [[[CKQueryOperation alloc] initWithQuery:query] autorelease];
operation.desiredKeys = @[@"target_of_the_vote . url_of_profil_pic"];
operation.resultsLimit = 10;
operation.recordFetchedBlock = ^(CKRecord * _Nonnull record)
这一行将是给我 URL.
的谓词
operation.desiredKeys = @[@"target_of_the_vote . url_of_profil_pic"];
假设您已经获取了记录,并且 url_of_profil_pic
是一个 CKAsset
,您必须将资产 URL 转换为一个 Data
对象,您可以保存到这样的文件中:
//record is the CKRecord you fetched
if let asset = record["url_of_profil_pic"] as? CKAsset{
do{
try yourData = Data(contentsOf: asset.fileURL)
//Save yourData to disk...
}catch{
print("Error saving profile pic from CKAsset")
}
}
Apple 建议在 CloudKit (docs) 上将超过 1MB 的内容保存为 CKAsset
。
我对 CKQuery 的工作原理有一个基本的误解。
我有 2 种记录类型:
- 朋友:包含字段
- url_of_profil_pic
- 名字
- ...
- 投票:包含字段
- date_of_vote
- target_of_the_vote(网友CK参考)
- the_one_who_vote(cloudkit 用户 ID)
我只是在想如何在 Vote [=54= 上查询时获得 url_of_profil_pic ]
基本上,想要这样的东西:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"the_one_who_vote = %@", recordReference.recordID];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Votes" predicate:predicate];
query.sortDescriptors = [NSArray arrayWithObject:[[NSSortDescriptor alloc]initWithKey:@"createdAt" ascending:false]];
CKQueryOperation *operation = [[[CKQueryOperation alloc] initWithQuery:query] autorelease];
operation.desiredKeys = @[@"target_of_the_vote . url_of_profil_pic"];
operation.resultsLimit = 10;
operation.recordFetchedBlock = ^(CKRecord * _Nonnull record)
这一行将是给我 URL.
的谓词operation.desiredKeys = @[@"target_of_the_vote . url_of_profil_pic"];
假设您已经获取了记录,并且 url_of_profil_pic
是一个 CKAsset
,您必须将资产 URL 转换为一个 Data
对象,您可以保存到这样的文件中:
//record is the CKRecord you fetched
if let asset = record["url_of_profil_pic"] as? CKAsset{
do{
try yourData = Data(contentsOf: asset.fileURL)
//Save yourData to disk...
}catch{
print("Error saving profile pic from CKAsset")
}
}
Apple 建议在 CloudKit (docs) 上将超过 1MB 的内容保存为 CKAsset
。