假设我的CloudKit数据库中有2个实体:
- Album
- (NSString) title
- Photo
- (NSString) name
- (CKRefrence) album
照片有一个CKReference到相册。这意味着1张专辑可以有很多照片(如预期的那样)。
我有一个屏幕,我想要显示所有相册,以及每张相册中有多少张照片。查询此问题的最佳方法是什么?如果我现在查询专辑,每张专辑都不知道它的照片。
答案 0 :(得分:5)
对于每个专辑对象anAlbum,您将形成谓词并查询Photo记录类型,如下所示:
let predicate = NSPredicate(format: "album == %@", anAlbum)
let query = CKQuery(recordType: "Photo", predicate: predicate)
在completionHandler中,您可以获得结果数组的计数,该数组是属于anAlbum的照片数。
答案 1 :(得分:2)
CloudKit不应该用作模型层,它只是连接框架,它为您提供数据库。 您可以使用CoreData作为模型层来解决您的任务。 创建相册实体,它与照片实体有一对多的关系,与相册有一对一的关系。
然后首先检索所有相册并将每个记录映射到CoreData中相应的相册实体。然后获取所有照片,将它们映射到CoreData中的Photo实体,并将每张照片匹配到CoreData中相应的Album实体。