【问题标题】:SwiftUI weird crash with searchable modifier带有可搜索修饰符的 SwiftUI 奇怪崩溃
【发布时间】:2021-09-09 19:15:34
【问题描述】:

我正在使用 macOS Montery 的 Beta 版和 Xcode 13 beta 2,但 searchable 修饰符出现问题。

这就是我所做的:

  1. 新建一个 SwiftUI macOS 项目
  2. 将项目部署目标更改为 12.0 (Montery)
  3. 添加此代码:
struct ContentView: View {
    @State var text: String = ""
    var body: some View {
        NavigationView {
            
        }
        .searchable(text: $text)
    }
}

应用程序在运行后立即崩溃并出现此错误:

dyld[7740]: Symbol not found: _$s7SwiftUI4ViewPAAE10searchable4text9placement6promptQrAA7BindingVySSG_AA20SearchFieldPlacementVAA4TextVSgtF
  Referenced from: /Users/user/Library/Developer/Xcode/DerivedData/TestProj-cfncvdprydmxfxdxqyronusubbek/Build/Products/Debug/TestProj.app/Contents/MacOS/TestProj
  Expected in: /System/Library/Frameworks/SwiftUI.framework/Versions/A/SwiftUI

我尝试清理构建文件夹,并清除 Xcode 12 的派生数据,以及我用于构建项目的 Xcode 版本,即 Xcode 13 beta 2。

可能原因:

我在this 问题上听说这个问题是由不同版本的 Xcode 测试版和目标设备引起的。这是有道理的,因为我正在运行 Xcode beta 2,但使用的是 macOS Montery 的第一个版本(我认为)。但是,没有第二个 macOS Montery 可用。

没有任何帮助。怎么回事?

【问题讨论】:

    标签: swift xcode macos swiftui


    【解决方案1】:

    据我了解,可搜索适用于列表。我也遇到了一些问题,但以下代码适用于 macOS 12 Monterey。

    struct ContentView: View {
        @State private var searchText: String = ""
        @State private var options: [String] = ["one","two","three"]
    
        var body: some View {
            NavigationView {
                List($options, id: \.self) { $option in
                      Text(option)
                  }
                .searchable("Search options", text: $searchText, placement: .automatic){
                    Text("tw").searchCompletion("two")
                  }
            }
        }
    }
    

    【讨论】:

    • 啊,那行得通。谢谢!看来使用不推荐使用的方法有效(.searchable("Search options", text: $searchText)),但这样做.searchable(text: $searchText) 失败
    猜你喜欢
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多