是否可以将图像与CloudKit中使用的记录分开保存



我想让应用程序的用户为提要创建帖子,但我想单独存储帖子图像以加快加载时间。是否可以将图像存储在一个记录中,然后在获取帖子的同时将它们与所属的帖子一起获取?如果是,我将如何在SwiftUI中实现这一点?

我已经学会了如何保存/获取帖子而不是图片。

是的,你当然可以做到。我假设您的recordType是一个Post,它具有提要中某个项目的内容。

我能想到两种选择。无论采取何种方法,都应该将图像存储为CloudKit上的CKAsset

===选项1===

您可以在Post上有一个类型为Asset List的字段,并将其加载为CKAsset记录,这些记录将是您的图像。当您访问每个CKAsset时,它会在您拥有原始Post记录后下载。这可能是最干净的方法。

===选项2====

制作另一个名为ImagerecordType,它可能有一个类型为Reference(一个CKReference(的字段返回到Post。因此,当创建每个Image时,它会被分配一个Post并指向它

当您查询Post记录时,还将查询连接到Post的所有Image记录。可以这样做:

let query = CKQuery(recordType: "Image", predicate: NSPredicate(format: "post = %@", CKRecord.Reference(recordID: CKRecord.ID(recordName: yourPostRecordName), action: .deleteSelf)))
let operation = CKQueryOperation(query: query)

var images = [CKRecord]()
operation.recordFetchedBlock = { record in
//Load up all the images
images.append(record)
}
operation.queryCompletionBlock = { cursor, error in
//All the image records have been downloaded, or there was an error
}
yourContainerDatabase.add(operation)

最新更新