ios - CKQuery 使用 CKAssets 很慢

标签 ios performance icloud cloudkit ckasset

当我获取包含字符串(或其他)字段的记录时,不到 1 秒:

 let query = CKQuery(recordType: "Messages", predicate: NSPredicate(format: "TRUEPREDICATE"))
    NSLog("Started fetching")
    self.publicDb.performQuery(query, inZoneWithID: nil) { (records, error) in
        NSLog("Finished fetching")
        print(records!.count)
    }

但是,当此记录类型包含 CKAsset 时,查询时间至少会增加 3 秒。当我要加载 100kb 的图像时,这是 Not Acceptable 。当我将 Assets 作为引用并从那里加载时,情况是一样的。我可以做些什么来加快对包含 Assets 的记录的查询,或者是否有任何其他方法可以更有效地存储 Assets ?

最佳答案

使用操作并设置服务质量:

CKQueryOperation *queryOperation = [[CKQueryOperation alloc] initWithQuery:query];

queryOperation.qualityOfService = NSQualityOfServiceUserInitiated;

如果不设置qualityOfService,就会获取后台级别,速度会很慢。

关于ios - CKQuery 使用 CKAssets 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36968650/

相关文章:

ios - AVAssetExportSession 在输出视频的右侧和底部给我一个绿色边框

javascript - 最有效的滚动文本

ios - iCloud突然超时无法下载文件

ios - 防止 iCloud 下载较旧的应用程序版本

ios - 将文件写入 iCloud 驱动器错误域=NSCocoaErrorDomain 代码=256

ios - 设置自定义按钮字体而不被 Storyboard 中设置的值覆盖

ios - 将 XCode 命令行 C++ 程序转换为 Cocoa Mac App OSX 程序

iphone - 苹果开发者统计

javascript - 缩小 JS/CSS 文件

c# - 在 C# 中使用字典的正确方法是什么?