我允许用户保存位置。它保存在 cloudKit 中,我可以成功获取所有位置。对于保存的每个位置,都有一个创建它的记录“创建者:IDXXX”。如何提取创建它的单个用户保存的所有位置?
在 CloudKit 中,我有 2 种记录类型,位置和用户。当一个位置被保存时,它被保存为一个位置,我使用 CKReference 将用户记录 ID 的引用添加到位置中的一个字段,该字段我标记为属性名称的“owningList”,属性类型为“Reference”。当保存新位置并获取新保存位置的 CKRecord 时,将调用下面的此方法。
- (void)saveLocationToUserWithLocationRecord:(CKRecord *)locRecord {
CKReference *ref = [[CKReference alloc] initWithRecordID:self.userRecordID action:CKReferenceActionDeleteSelf];
[locRecord setObject:ref forKey:@"owningList"];
}
然后我尝试使用指定 CKReference 的谓词来获取所有位置,CKReference 是用户的记录 ID 和字段名称“owningList”,这不会返回任何结果。我尝试了其他方法但没有成功。我对此很陌生,任何帮助或澄清将不胜感激。
-(void)fetchUsersSavedLocations:(CKRecordID *)ID {
CKDatabase *database = [[CKContainer defaultContainer] publicCloudDatabase];
CKReference* recordToMatch = [[CKReference alloc] initWithRecordID:ID
action:CKReferenceActionDeleteSelf];
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"%K == %@", @"owningList", recordToMatch];
CKQuery* query = [[CKQuery alloc] initWithRecordType:@"Location" predicate:predicate];
[database performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
if (!error) {
NSLog(@"SUCCESS results %@”, results);
}
else {
NSLog(@"failed with error %@", error);
}
}];
}