SwiftUI本地化Package视图XCPreview无法显示及链接错误问题
我创建了一个用于测试SwiftUI本地化的项目,结构包含:
- 一个负责本地化的Package
- 两个视图Package,其中一个依赖另一个,用于模拟大型项目中多层拆分的嵌套视图结构(TheParentView 嵌套 TheChildView)
项目在模拟器和真机上均可正常构建运行,主视图中的本地化文本显示正常,但在使用Xcode Preview时遇到以下问题:
原问题:TheChildView 预览崩溃
- TheParentView 的预览可以正常加载,但显示的是本地化键而非实际本地化字符串——这是XCPreview在该场景下获取默认Locale的已知问题
- TheChildView 的预览无法加载,等待一段时间后XCPreview崩溃,异常类型为
EXC_BREAKPOINT (SIGTRAP),仅提示“启动时的第一个闭包”,无其他有效报错线索 - 已确认项目中未设置任何断点,排除了断点导致该异常的常见原因
- 期望:TheChildView的预览至少能像TheParentView一样,显示本地化键或代码
#Preview块中设置的占位内容
更新:修改String包类型为.dynamic后出现链接错误
将String包的类型改为.dynamic后,两个视图Package均出现相同的链接错误,但项目依然能在模拟器和真机上正常构建运行:
LinkDylibError: Failed to build TheParentView.swift
Linking failed: linker command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture arm64:
"Strings.L.first.unsafeMutableAddressor : SwiftUI.LocalizedStringKey", referenced from:
closure #1 @Swift.MainActor () -> SwiftUI.View in static TheParentView_PreviewReplacement_TheParentView_1.$s033TheParentView_PreviewReplacement_abC2_133_755AF9EAB51BED29A3BA74CCC1C408E5Ll0D0fMf_15PreviewRegistryfMu_.makePreview() throws -> DeveloperToolsSupport.Preview in TheParentView.1.preview-thunk.o
"Strings.L.second.unsafeMutableAddressor : SwiftUI.LocalizedStringKey", referenced from:
closure #1 () -> SwiftUI.TupleView<(SwiftUI.Button<SwiftUI.Label<SwiftUI.Text, SwiftUI.EmptyView>>, TheChildView.TheChildView)> in (extension in TheParentView_PreviewReplacement_TheParentView_1):TheParentView.TheParentView.(__preview__body in _755AF9EAB51BED29A3BA74CCC1C408E5).getter : some in TheParentView.1.preview-thunk.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
目前未发现任何架构相关问题,无法理解该链接错误的成因。
内容的提问来源于stack exchange,提问作者Viktor_DE

