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

Xcode 14 Beta中SwiftUI的.searchable()修饰符在旧项目输入文本自动消失

旧项目SwiftUI .searchable()输入异常的排查方案

十有八九是旧项目的配置与Xcode14 Beta的SwiftUI 4.0不兼容导致的,毕竟相同代码在新项目中能正常运行。下面是几个重点排查方向:

1. 部署目标版本不匹配

旧项目由Xcode11创建,初始部署版本可能低于iOS/iPadOS 16——你使用的NavigationStack和新版.searchable()都是SwiftUI 4.0的特性,要求系统版本≥16才能正常工作。Xcode Beta对低版本部署目标的兼容处理容易出现bug,进而导致输入字符自动被清除。
排查步骤:

  • 选中项目target,进入「General」标签页
  • 查看「Deployment Info」中的系统版本,修改为iOS 16.0或更高
  • 同步检查Info.plist里的MinimumOSVersion值是否与上述设置一致

2. Swift编译配置存在遗留

旧项目可能保留了Xcode11时期的Swift编译设置,与Xcode14的Swift 5.6/5.7版本存在冲突:

  • 进入「Build Settings」搜索「Swift Language Version」,确保设置为Swift 5.6及以上
  • 查看「Other Swift Flags」中是否存在旧版本标记(如-swift-version 5.1),删除这类无关标记

3. Info.plist缺失必要配置

新项目默认会包含SwiftUI 4.0所需的配置项,旧项目可能存在遗漏:

  • 打开Info.plist,检查是否有NSUserActivityTypes配置,或是iPadOS项目的「Supports multiple windows」是否开启——部分SwiftUI导航组件依赖这些配置才能正常运行
  • 可将新项目Info.plist中的关键配置项同步到旧项目中,对比测试排查问题

4. 清理项目缓存

Xcode Beta版本的缓存经常会引发奇怪的兼容性问题:

  • 按下Command+Shift+K清理项目缓存,再按Command+Option+Shift+K清理构建文件夹
  • 关闭Xcode,删除项目对应的DerivedData文件夹(路径:~/Library/Developer/Xcode/DerivedData/中对应项目的文件夹)
  • 重启Xcode后重新构建运行

复现问题用于Apple反馈的技巧

如果需要向Apple提交反馈,可尝试以下操作强制复现:

  • 先将旧项目的部署目标改回低版本(如iOS 15),运行后再改回iOS 16,重复操作看是否能触发异常
  • 将旧项目的Info.plist和Build Settings配置逐步复制到新项目中,逐个排查是哪项配置导致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:25:09