Ios 在CloudKit中查询引用的最佳方法?

Ios 在CloudKit中查询引用的最佳方法?,ios,cloudkit,Ios,Cloudkit,假设我的CloudKit数据库中有2个实体: - Album - (NSString) title - Photo - (NSString) name - (CKRefrence) album 照片包含对相册的引用。这意味着一个相册可以有许多照片(如预期的那样) 我有一个屏幕,我想显示所有相册,以及每个相册中有多少张照片。最好的查询方式是什么?如果我现在查询相册,每个相册都不知道它的照片 对于每个相册对象anAlbum,您将形成谓词并查询照片记录类型,如下所示: let pred

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

- Album
  - (NSString) title

- Photo
  - (NSString) name
  - (CKRefrence) album
照片包含对相册的引用。这意味着一个相册可以有许多照片(如预期的那样)


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

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

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

在completionHandler中,您可以获得结果数组的计数,即属于anAlbum的照片数。

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


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

您不能仅查询照片。您需要从相册中提取Reference.recordId,并将它们作为数组发送到CKRecordFetchRequest。