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

时间:2014-07-16 18:48:16

标签: ios cloudkit

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

- Album
  - (NSString) title

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

照片有一个CKReference到相册。这意味着1张专辑可以有很多照片(如预期的那样)。

我有一个屏幕,我想要显示所有相册,以及每张相册中有多少张照片。查询此问题的最佳方法是什么?如果我现在查询专辑,每张专辑都不知道它的照片。

2 个答案:

答案 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实体。