我正在使用CloudKit存储记录,包括CKAsset,它是一个图像(不超过400 kb)。当我尝试在数据库中查询这些记录时,获得第一条记录会花费很长时间,超过10秒,即使以我的互联网速度,我知道它应该花费不到1.5秒的时间。其他记录通常在第一个进入后1秒钟之内很快加载。这是该操作的代码。我尝试添加operation.queuePriority = .veryHigh
和operation.qualityOfService = .userInteractive
,但它们根本不会改变速度。为什么会这样呢?有办法提高效率吗?移至生产数据库时,是否可以解决此问题?谢谢你的帮助。
let query = CKQuery(recordType: ClubType, predicate: predicate)
// Sort so that you get the biggest first
query.sortDescriptors = [NSSortDescriptor(key: "numFollowers", ascending: false)]
let operation = CKQueryOperation(query: query)
// Limit on num results
operation.resultsLimit = n
operation.queuePriority = .veryHigh
operation.qualityOfService = .userInteractive
// Gets called once for each record
operation.recordFetchedBlock = { r in
let c = Club()
// Get data from club
c.id = r.recordID.recordName
if let n = r["name"] as? String {
c.name = n
}
if let f = r["numFollowers"] as? Int {
c.numFollowers = f
}
if let category = r["category"] as? String {
if let cat = ClubCategory(rawValue: category) {
c.category = cat
} else {
c.category = ClubCategory.none
}
}
if let isPublic = r["isPublic"] as? Int {
if isPublic == 1 {
c.isPublic = true
} else {
c.isPublic = false
}
}
if let asset = r["coverPhoto"] as? CKAsset {
c.imgUrl = asset.fileURL
if let img = c.imgUrl?.image() {
c.coverImage = img
}
}
completion(c)
}
self.publicDB.add(operation)