Swift iOS CloudKit在查询大量CKAsset时速度较慢(即使有QoS)

Swift iOS CloudKit在查询大量CKAsset时速度较慢(即使有QoS),swift,cloudkit,coreml,Swift,Cloudkit,Coreml,我正在使用CloudKit下载CoreML(机器学习)模型。它们每个大约有90MB。我有一个公共数据库和一个自定义“ML”记录类型的默认区域。 我通过id查询这个“ML”,在完成块上获得响应需要一分钟以上(应该是几秒钟的事情)。我尝试过生产环境、设置服务质量和不同的查询方式,但结果相同(非常慢)。 我想知道我是否遗漏了什么,或者是否有其他方法可以更快地下载ML模型 以下是我当前的代码: let arrayPredicate = NSPredicate(format: "id == %@", id

我正在使用CloudKit下载CoreML(机器学习)模型。它们每个大约有90MB。我有一个公共数据库和一个自定义“ML”记录类型的默认区域。 我通过id查询这个“ML”,在完成块上获得响应需要一分钟以上(应该是几秒钟的事情)。我尝试过生产环境、设置服务质量和不同的查询方式,但结果相同(非常慢)。
我想知道我是否遗漏了什么,或者是否有其他方法可以更快地下载ML模型

以下是我当前的代码:

let arrayPredicate = NSPredicate(format: "id == %@", id)
let query = CKQuery(recordType: "ML", predicate: arrayPredicate)


let queryOperation = CKQueryOperation(query: query)
queryOperation.qualityOfService = .userInteractive
queryOperation.resultsLimit = 1
queryOperation.recordFetchedBlock = { record in
  // This gets called +60 sec after
}

queryOperation.queryCompletionBlock = { record, error in
  // Same here
}

publicDB.add(queryOperation)

我切换到Firebase存储进行测试,结果稍微快了一点,但没有快多少
rmdaddy
TommyBs
的思路是正确的:CloudKit可能会稍微慢一点,因为您需要查询记录,但下载速度也差不多


我的最终解决方案是使用
Firebase存储
,因为它很容易处理下载进度,然后在UI上显示,让用户等待

为什么您希望从CloudKit下载一个90MB的blob是“几秒钟的事”?因为如果我从Dropbox下载同一个文件(例如),大约需要5秒钟。我假设您的“Dropbox”测试下载使用的是您当时已知的特定文件,而不是您在这里使用的谓词。如果您下载一个没有谓词的特定硬编码示例,是否有速度提升?是否可以在没有谓词的情况下硬编码?这是我没有尝试过的一件事,以某种方式在iCloud中获取文件的url并将其放入应用程序中。。。应该快一点