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

动态排序引发‘toolbar(content:)’使用歧义编译错误求助

问题原因及修复方案

核心错误

你遇到的Ambiguous use of 'toolbar(content:)'编译错误,根源是**EntrySortOrder结构体没有声明遵循View协议**。SwiftUI要求所有视图结构体必须显式遵循View协议,否则编译器无法识别它作为视图的类型,进而导致上层视图链的类型推断混乱,最终引发toolbar调用的歧义。

另外代码里还有两个小问题:

  • EntrySortOrder的body里用了未定义的travelEntries,应该是你通过@Query声明的entries
  • EntryView里的@Query var entries: [Entries]缺少初始化逻辑,这可能是你精简代码时省略的,暂时不影响当前编译错误的修复

修正后的代码

struct EntryView: View {
    
    @State private var sortOrder = SortOrder.forward
    @Query var entries: [Entries] // 实际使用时需补充初始化逻辑
    
    var body: some View {
        
        VStack {
            EntrySortOrder(sortOrder: sortOrder)
        }
        .toolbar {
            Button {
                sortOrder = sortOrder == .forward ? .reverse : .forward
            } label: {
                Image(systemName: "arrow.up.arrow.down.circle")
            }
            .symbolVariant(sortOrder == .forward ? .none : .fill)
        }
    }
}


@MainActor
struct EntrySortOrder: View { // 添加View协议遵循
    
    @Query private var entries: [Entries]
    
    init(sortOrder: SortOrder) {
        let sort = [SortDescriptor(\Entries.entryDate, order: sortOrder)]
        
        _entries = Query(sort: sort)
    }
    
    var body: some View {
        List {
            ForEach(entries) { item in // 修正为正确的变量名entries
                ShowRow(item: item)
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者Galen Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 14:52:04