ParseSwift通过子关联对象查询父级ParseObject无返回结果求助
ParseSwift 关联父对象查询解决方案
问题根因
你当前的写法直接用等于判断匹配Relation类型字段不符合ParseSwift的查询规则:wrestlers是集合类型的Relation字段,无法直接用等号匹配单个Wrestler实例,所以查询不会返回结果。
前置校验
首先确认你的Match类字段定义和后台配置一致:
struct Match: ParseObject { // ParseObject 基础必选字段 var objectId: String? var createdAt: Date? var updatedAt: Date? var ACL: ParseACL? var originalData: Data? // 关联字段,需和后台字段名、大小写完全匹配 var wrestlers: Relation<Wrestler>? }
同时确认你用于过滤的wrestler实例已经成功保存到服务端,存在合法的objectId。
正确查询写法
使用contains条件匹配Relation中的关联对象即可:
let query = Match.query() .where("wrestlers", contains: wrestler) .includeAll() // 异步执行查询 query.find { result in switch result { case .success(let matches): // 处理返回的比赛列表 print("关联比赛数量:\(matches.count)") case .failure(let error): // 处理错误 print("查询错误:\(error)") } }
异常排查项
- 校验后台
Match类的wrestlers字段类型确实为Relation,关联目标类为Wrestler,字段名大小写和代码完全一致,Parse服务字段大小写敏感 - 确认当前登录用户拥有
Match类的读取权限,ACL权限限制会导致符合条件的结果也无法返回 - 如果使用旧版本ParseSwift不支持字符串键的contains写法,可以改用键路径写法:
.where(\.wrestlers, contains: wrestler)
内容的提问来源于stack exchange,提问作者Tyler Goose Lafferty
相关产品推荐
相关产品推荐

