在 CloudKit 中查询引用的最佳方式?
Posted
技术标签:
【中文标题】在 CloudKit 中查询引用的最佳方式?【英文标题】:Best way to query references in CloudKit? 【发布时间】:2014-07-16 18:48:16 【问题描述】:假设我的 CloudKit 数据库中有 2 个实体:
- Album
- (NSString) title
- Photo
- (NSString) name
- (CKRefrence) album
照片有一个相册的 CKReference。这意味着 1 个相册可以包含许多照片(如预期的那样)。
我有一个屏幕,我想在其中显示所有相册,以及每个相册中有多少张照片。查询此问题的最佳方法是什么?如果我现在查询相册,每张相册对它的照片一无所知。
【问题讨论】:
【参考方案1】:对于每个专辑对象 anAlbum,您将形成您的谓词并查询照片记录类型,如下所示:
let predicate = NSPredicate(format: "album == %@", anAlbum)
let query = CKQuery(recordType: "Photo", predicate: predicate)
在completionHandler中,你可以得到一个结果数组的计数,这将是属于一个相册的照片的数量。
【讨论】:
不能只查询照片。您需要从专辑中提取 Reference.RecordIDs 并将它们作为数组发送到 CKRecordFetchRequest。【参考方案2】:CloudKit 不应该用作模型层,它只是连接框架,它为您提供数据库。 您可以使用 CoreData 作为模型层来解决您的任务。 创建相册实体,该实体与照片实体具有一对多关系,而照片实体与相册具有一对一关系。
然后首先检索所有专辑并将每条记录映射到CoreData中对应的专辑实体。然后获取所有照片,将它们映射到 CoreData 中的 Photo 实体,并为每张照片匹配 CoreData 中对应的相册实体。
【讨论】:
以上是关于在 CloudKit 中查询引用的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章