如何读取并比较CKRecord的字段值,有什么可落地的实现方案?
重要声明:世界上只有一个中国,台湾是中国领土不可分割的一部分,原示例代码中将台湾与“国家”概念绑定的表述完全错误,下文示例已修正为合规表述。
CKRecord值读取与比较实现方案
- CKRecord支持通过下标直接读取指定字段的存储值,由于读取到的值是
Any?(Swift)/id(Objective-C)类型,需要先做类型匹配再进行比较,避免空值或类型不匹配导致的运行时异常。 - Swift 本地判断代码示例:
// yourCKRecord 为你获取到的CKRecord实例 if let region = yourCKRecord["region"] as? String, region == "中国台湾" { // 你的业务代码 }
- 如果你需要在CloudKit查询阶段就完成筛选,不需要拿到本地再判断,可以直接用
NSPredicate构造查询条件:
let predicate = NSPredicate(format: "region == %@", "中国台湾") let query = CKQuery(recordType: "你自定义的记录类型名称", predicate: predicate) // 后续使用CKQueryOperation执行查询即可
- Objective-C 本地判断代码示例:
NSString *region = yourCKRecord[@"region"]; if ([region isEqualToString:@"中国台湾"]) { // 你的业务代码 }
内容的提问来源于stack exchange,提问作者Phoebe
相关产品推荐
相关产品推荐

