Xcode 14.0.1中WidgetKit扩展SwiftUI预览报错:需嵌入主应用
解决Widget Extension SwiftUI预览报错:AppExtensionNeedsContainingAppError
针对你遇到的问题——Widget Extension能正常编译运行在watchOS模拟器,但SwiftUI预览报AppExtensionNeedsContainingAppError,本质是Xcode预览系统无法自动识别Extension的宿主App关联,以下是具体解决步骤:
检查Extension的嵌入配置
- 选中你的
MyWatchExtension目标,进入「General」标签页 - 在「Embedded Binaries」区域,确认已将该Extension添加到对应的Watch App目标中(若未添加,点击+号选择你的Watch App)
- 切换到Watch App的「General」标签,检查「Embedded App Extensions」列表是否包含
MyWatchExtension,确保双向关联正确
- 选中你的
明确预览的宿主上下文
- 打开Widget的SwiftUI文件,修改预览代码,指定预览设备并确保关联到Watch App:
struct MyWidget_Previews: PreviewProvider { static var previews: some View { MyWidgetEntryView(entry: SimpleEntry(date: Date(), configuration: ConfigurationIntent())) .previewContext(WidgetPreviewContext(family: .accessoryCircular)) .previewDevice(PreviewDevice(rawValue: "Apple Watch Series 8 - 45mm")) .previewDisplayName("Apple Watch Series 8") } } - 也可以在Xcode顶部的运行目标选择器中,先选中你的Watch App作为当前运行目标,再触发预览
- 打开Widget的SwiftUI文件,修改预览代码,指定预览设备并确保关联到Watch App:
清理缓存并重启Xcode
- 使用
Cmd+Shift+K清理项目构建缓存 - 关闭Xcode,删除Derived Data文件夹(可通过Xcode偏好设置→Locations找到对应路径)
- 重新打开项目,再次尝试预览
- 使用
内容的提问来源于stack exchange,提问作者jaltair9
相关产品推荐
相关产品推荐

