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

SwiftUI视图多动态FetchRequest初始化错误排查求助

问题排查与解决方案

你的问题根源在于:当视图中存在多个同类型的@FetchRequest(比如这里两个针对Action实体的请求)时,若不为每个请求指定唯一的id参数,SwiftUI会将它们视为同一个请求,导致复用相同的查询条件,最终返回完全一致的结果。

修复代码

在初始化每个FetchRequest时,添加唯一的id参数,让SwiftUI能够区分不同的查询请求:

@FetchRequest var dreamsForTheUser: FetchedResults<Dream>
@FetchRequest var actionsForTheUser: FetchedResults<Action>
@FetchRequest var actions: FetchedResults<Action>

init(filterForTheUser: String, filter: String) {
    // 为每个请求设置唯一ID,区分不同查询
    _dreamsForTheUser = FetchRequest<Dream>(
        sortDescriptors: [],
        predicate: NSPredicate(format: "dreamID BEGINSWITH %@", filterForTheUser),
        id: "dreams_user_\(filterForTheUser)"
    )
    
    _actionsForTheUser = FetchRequest<Action>(
        sortDescriptors: [],
        predicate: NSPredicate(format: "actionID BEGINSWITH %@", filterForTheUser),
        id: "actions_user_\(filterForTheUser)"
    )
    
    _actions = FetchRequest<Action>(
        sortDescriptors: [],
        predicate: NSPredicate(format: "actionID == %@", filter),
        id: "action_single_\(filter)"
    )
}

额外检查点

  1. 确认Core Data实体中的属性名与Predicate中的完全匹配(比如dreamID、actionID是否确实存在且为字符串类型)
  2. 检查传递给EditActionView的参数值:userViewModel.userID和action.actionID是否为预期的非空字符串
  3. 如果使用了自定义的managedObjectContext,需要在FetchRequest初始化时显式指定(添加context: 你的上下文实例参数)

内容的提问来源于stack exchange,提问作者Tracy9988 Xu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:23:34