在CloudKit中查询引用的最佳方法是什么?

假设我的CloudKit数据库中有两个实体:

- Album - (NSString) title - Photo - (NSString) name - (CKRefrence) album 

照片有一个CKReference对册页。 这意味着1张专辑可以有很多照片(如预期)。

我有一个显示所有相册的屏幕,每张相册中有多less张照片。 什么是最好的方式来查询这个? 如果我现在查询专辑,每张专辑都不了解它的照片。

对于每个相册对象anAlbum,您将形成您的谓词并查询照片loggingtypes,如下所示:

 let predicate = NSPredicate(format: "album == %@", anAlbum) let query = CKQuery(recordType: "Photo", predicate: predicate) 

在completionHandler中,您可以获得结果数组的数量,这将是属于相册的照片的数量。

CloudKit不应该被用作模型层,它只是连接框架,它为您提供数据库。 您可以使用CoreData作为模型层来解决您的任务。 创build相册实体,它与相片实体有一对多的关系,与相册有一对一的关系。

然后首先检索所有相册,并将每个logging映射到CoreData中相应的Album实体。 然后获取所有照片,将它们映射到CoreData中的Photo实体,并为每个照片匹配CoreData中对应的Album实体。