iOS CloudKit 在查询繁重的 CKAsset 时速度很慢(即使有 QoS)

iOS CloudKit is slow on querying heavy CKAsset (even with QoS)

我正在使用 CloudKit 下载 CoreML(机器学习)模型。它们每个大约 90MB。我有 public 数据库和具有一种自定义 'ML' 记录类型的默认区域。 我通过id查询这个'ML',在completion block上得到响应需要一分多钟(应该是秒的事情)。我试过生产环境,设置服务质量,以及用不同的方式查询相同的结果(非常慢)。
我想知道我是否遗漏了什么,或者是否有任何其他更快地下载 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 存储进行测试,结果稍微快了一点,但也快不了多少。 rmdaddyTommyBs 的思路是对的: CloudKit 可能会慢一点,因为你需要查询记录,但下载速度差不多。

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