SwiftUI 无法预览此文件 - 发生意外错误

u.g*_*gen 9 xcode ios swift swiftui

一个仅针对 iOS 的 UIKit Xcode 项目,它有 3 个用于不同构建配置的目标。

\n

当我添加 swiftui 文件时,它可以正常构建并运行,但我看不到最简单的预览Cannot preview this file - un expected error occurred

\n

确切的诊断是

\n
HumanReadableSwiftError\n\nProviderError: ProviderError: noPreviewInfos(runDestination: Simulator - iOS 15.2 | iphonesimulator | x86_64 | iPhone 13 Pro Max | Apple Watch Series 6 - 44mm, thunkConfiguration: <IDEBuildOperationConfiguration buildCommand: 8, buildParameters: <IDEBuildParameters:0x7fe4bffe2f40:action=build:command=<IDEConcretePrimitiveSchemeCommand:0x7fe4bb382500:Run>:config=Release:dest=iPhone 13 Pro Max:arch=x86_64:workspaceArena=<IDEWorkspaceArenaSnapshot: 0x7fe4bbbbf2b0>:\noverridingProperties=(\n{ // Preview overrides (immutable)\n   DSTROOT = \xe3\x80\x90:/Users/x/Library/Developer/Xcode/DerivedData/MayApp-ezbgeibumcswldddlegmcbpnukij/Build/Intermediates.noindex/Previews/MayApp/ReleaseProducts\xe3\x80\x91\n   ENABLE_PREVIEWS = \xe3\x80\x90YES\xe3\x80\x91\n   OBJROOT = \xe3\x80\x90:/Users/x/Library/Developer/Xcode/DerivedData/MayApp-ezbgeibumcswldddlegmcbpnukij/Build/Intermediates.noindex/Previews/MayApp/Intermediates.noindex\xe3\x80\x91\n   SYMROOT = \xe3\x80\x90:/Users/x/Library/Developer/Xcode/DerivedData/MayApp-ezbgeibumcswldddlegmcbpnukij/Build/Intermediates.noindex/Previews/MayApp/Products\xe3\x80\x91\n},\n):\ncollectBuildTimeStatistics=NO\ncollectTimelineMetrics=NO>, executionEnvironment: Optional(<IDEExecutionEnvironment: 0x7fe52c865050>), singleFileToBuild: nil, buildLog: nil, parallelizeBuildables: true, dontActuallyRunCommands: false, buildImplicitDependencies: true, skipDependencies: false, buildables: Optional([<Xcode3TargetProduct:0x7fe549f34fa0:MayApp.app blueprint:<Xcode3Target:0x7fe4bb385f20:MayApp>>]), subsetOfBuildables: nil, buildDescriptionID: nil, scheme: Optional(<IDEScheme:0x7fe4baea1490:'MayApp'>), schemeTask: 0, clientInfo: nil>, blueprintName: MayApp Staging, sourceFilePath: /Users/x/Git/MayApp/options/MayApp_ios/MayApp/Application/Exploration/ProfileSettings/ProfileSettingsView.swift, thunkVariantSuffix: __XCPREVIEW_THUNKSUFFIX__)\n
Run Code Online (Sandbox Code Playgroud)\n

我尝试过的事情:\n我将 macos 和 xcode 更新到最新版本(Xcode 版本 13.2.1)

\n
    \n
  • SwiftUI 文件已添加到所有 3 个目标中
  • \n
  • 删除了模拟器
  • \n
  • 删除的派生数据
  • \n
  • 多次重启mac和xcode
  • \n
  • 尝试将“构建活动架构”设置为“是”和“否”
  • \n
  • 排除架构arm64
  • \n
  • sudo xcodebuild -license accept
  • \n
  • ENABLE_PREVIEWS = YES也尝试过设置所有目标
  • \n
\n

没有任何作用

\n

奇怪的是,当我添加 SwiftUI 文件而不运行测试时,它还抱怨 UI 测试,但我现在注释掉了这些文件。

\n

小智 -5

通常,此类问题可以通过清除派生数据文件夹来解决。以下是我通常遵循的步骤:

  • 使用 Cmd+Alt+Shft+K 深度清理项目
  • 退出 Xcode
  • 清除派生数据文件夹
  • 重新启动 Mac(并非总是需要)
  • 重新启动Xcode