You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xamarin.iOS中仅通过Key从CloudKit检索记录?

解决方案

获取特定记录类型的全部记录

要获取CloudKit中某一特定记录类型的所有记录,你可以使用**TRUEPREDICATE**作为查询谓词,这是CloudKit中匹配该类型下所有记录的标准写法。对应的Xamarin iOS代码示例如下:

// 替换为你要查询的记录类型名称
string recordType = "YourTargetRecordType"; 
// 创建匹配所有记录的谓词
NSPredicate predicate = NSPredicate.FromFormat("TRUEPREDICATE");
// 构建CKQuery对象
CKQuery query = new CKQuery(recordType, predicate);

// 执行查询(示例使用私有数据库区域)
CKDatabase privateDB = CKContainer.DefaultContainer.PrivateCloudDatabase;
privateDB.PerformQuery(query, null, (records, error) => {
    if (error != null) {
        // 处理查询错误
        Console.WriteLine($"查询失败: {error.LocalizedDescription}");
        return;
    }
    // 遍历返回的所有记录
    foreach (CKRecord record in records) {
        // 检查当前记录是否包含目标Key
        if (record.ContainsKey("YourTargetKey")) {
            var targetValue = record["YourTargetKey"];
            // 在这里处理获取到的Value
        }
    }
});

优化方案:直接筛选包含目标Key的记录

如果你的目标仅为获取包含指定Key的记录,无需先拉取全部记录再本地筛选,可以直接用谓词过滤掉不包含该Key的记录,减少网络传输数据量:

string targetKey = "YourTargetKey";
// 谓词:匹配包含目标Key且值不为空的记录
NSPredicate predicate = NSPredicate.FromFormat("%K != NULL", targetKey);
CKQuery query = new CKQuery(recordType, predicate);

补充提示

  • TRUEPREDICATE是CloudKit内置的特殊谓词,专门用于匹配指定记录类型下的所有记录,无需提前知晓任何记录ID或字段值。
  • CloudKit默认查询最多返回100条记录,若你的记录数量超过限制,需要使用CKQueryOperation并设置Cursor来分页获取全部数据。

内容的提问来源于stack exchange,提问作者Pavlos Mavris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 15:45:42