我想让应用程序的用户为提要创建帖子,但我想单独存储帖子图像以加快加载时间。是否可以将图像存储在一个记录中,然后在获取帖子的同时将它们与所属的帖子一起获取?如果是,我将如何在SwiftUI中实现这一点?
我已经学会了如何保存/获取帖子而不是图片。
是的,你当然可以做到。我假设您的recordType
是一个Post
,它具有提要中某个项目的内容。
我能想到两种选择。无论采取何种方法,都应该将图像存储为CloudKit上的CKAsset
。
===选项1===
您可以在Post
上有一个类型为Asset List
的字段,并将其加载为CKAsset
记录,这些记录将是您的图像。当您访问每个CKAsset
时,它会在您拥有原始Post
记录后下载。这可能是最干净的方法。
===选项2====
制作另一个名为Image
的recordType
,它可能有一个类型为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)