使用SwiftUI .searchable()出现NaN错误,含义与解决办法?
SwiftUI .searchable()触发CoreGraphics NaN错误的问题解答
1. 你的代码用法没有错误
你对.searchable()的使用完全符合SwiftUI官方规范,将其修饰在NavigationStack外部是合法写法,问题并非出自你的代码。
2. 该错误属于可忽略的日志噪音
这是苹果SwiftUI/UIKit框架底层的已知bug,是框架内部向CoreGraphics API传递了无效的NaN数值导致的,不会影响应用的功能、稳定性或上架审核,完全可以忽略。
3. 抑制该警告的方法
- 升级开发环境:苹果在iOS/iPadOS 16.4+、Xcode 14.3+的版本中修复了这个问题,升级到最新的系统和开发工具是最彻底的解决方式。
- 调整修饰符位置:尝试将
.searchable()移到NavigationStack内部,部分开发者反馈这种写法能规避错误日志,示例代码如下:
import SwiftUI struct ContentView: View { @State private var searchText = "" var body: some View { NavigationStack { Text("Searching for \(searchText)") .navigationTitle("Searchable Example") .searchable(text: $searchText) } } }
- 关闭特定日志输出:在Xcode的Scheme配置中,添加环境变量
CG_NUMERICS_SHOW_BACKTRACE并设置为NO,可以关闭该错误的回溯提示;如果想彻底屏蔽这类系统日志,也可添加OS_ACTIVITY_MODE设为disable,但不建议在调试阶段使用,会影响其他系统日志的查看。
内容的提问来源于stack exchange,提问作者ra9r
相关产品推荐
相关产品推荐

