如何在私有数据库 CloudKit 中获取 RecordType 的所有名称
Posted
技术标签:
【中文标题】如何在私有数据库 CloudKit 中获取 RecordType 的所有名称【英文标题】:How to get all name of RecordType in a private Database CloudKit 【发布时间】:2015-02-05 09:32:09 【问题描述】:我想知道如何在 Cloud Kit 中的私有数据库中获取一个包含所有记录类型名称的数组,以读取我的所有数据?
我保存我的数据:
CKRecord* fav1 = [[CKRecord alloc] initWithRecordType:@"Favoris1"];
[fav1 setObject:@"Favoris 1 name"forKey:@"name"];
[fav1 setObject:@"2003 year"forKey:@"year"];
[self.privateDatabase saveRecord:fav1
completionHandler:^(CKRecord *savedState, NSError *error)
if (error)
NSLog(@"ERROR SAVING: %@", error);
else
NSLog(@"SAVE OK");
];
我读取了我的数据:
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Favoris1" predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];
[self.privateDatabase performQuery:query
inZoneWithID:nil
completionHandler:^(NSArray *results, NSError *error)
if (!error)
NSLog(@"results query %@", results);
NSLog(@"--> %@",[[results objectAtIndex:0] objectForKey:@"name"]);
NSLog(@"--> %@",[[results objectAtIndex:0] objectForKey:@"year"]);
else
NSLog(@"FETCH ERROR: %@", error);
];
我想用其他属性保存另一条记录,例如:
CKRecord* fav2 = [[CKRecord alloc] initWithRecordType:@"Favoris2"];
[fav2 setObject:@"Favoris 2 name"forKey:@"name"];
[fav2 setObject:@"2005 year"forKey:@"year"];
如何在保存后拥有一个包含 Favoris1 和 Favoris2 的数组来读取我的所有记录?
【问题讨论】:
【参考方案1】:在 CloudKit 中没有函数可以从数据库中返回所有可用的记录类型。您也不能同时查询多个记录类型。您必须执行 2 个查询。如果您需要类似的东西,您可以做的是将结果数组连接在一起。
由于对象是相同的,最好只使用 1 个记录类型并添加一个额外的字段来指定您的自定义类型(Favoris1 或 Favoris2)然后您可以只查询记录类型并在返回的字段中查看它是自定义类型。
【讨论】:
以上是关于如何在私有数据库 CloudKit 中获取 RecordType 的所有名称的主要内容,如果未能解决你的问题,请参考以下文章
CloudKit 私有数据库返回前 100 个 CKRecords
如何使用 CloudKit 将条目从公共数据库保存到私有数据库