SwiftUI忽略导入

时间:2019-06-08 11:10:50

标签: swift swiftui xcode11

我刚刚安装了Xcode11 Beta,当我尝试使用SwiftUI选中标记创建新的新项目时,它返回错误。

无法成功构建和运行。

  

文件“ ContentView.swift”是模块“ SwiftUI”的一部分;忽略导入

ContentView.swift

enter image description here

  

使用未声明类型的“视图”

SceneDelegate.swift

enter image description here

  

使用未解析的标识符'UIHostingController'

我尝试删除所有派生数据,并将命令行工具设置为11

我正在使用macOS Mojave 10.14.5

3 个答案:

答案 0 :(得分:16)

您的项目名为SwiftUI-请尝试更改名称。

答案 1 :(得分:0)

详细答案

您创建的每个项目都有一个module,其名称与项目相同。因此,这里有两个 SwifUI模块:

  1. 实际的SwiftUI
  2. 项目本身

Xcode始终将最接近的定义作为默认值。因此,您的SwiftUI比系统的SwiftUI更近。但是您已经已经进入该项目的模块!因此Xcode会忽略导入。

一个非常常见的错误是将项目命名为与使用框架之一相同的名称! (例如CoreDataSwiftUISceneKitMetal

解决方案

正如Matteo在他的回答中提到的,不要用另一个模块为您的项目命名 same 。将其更改为其他任何内容。


请注意,它也可能显示为错误。例如,如果您将项目命名为CoreData,并使用 SwiftUI ,则错误显示为Circular dependency error

'CoreData'和'SwiftUI'模块之间的循环依赖

由于Xcode对模块感到困惑,无法检测出真正的问题所在。


Ho,我们可以访问模块的类而不是系统的模块吗?

假设您在名为class的自定义框架中有一个名为Section的{​​{1}},并且将其与MyProject一起导入了。

SwiftUI

为使编译器(以及其他任何人)清楚可见,应在类名之前调用模块:

import SwiftUI
import MyProject

Section // <- This could be either SwiftUI's section or MyProject's Section

答案 2 :(得分:-1)

您永远不要创建名称为 SwiftUI 的应用,它始终会显示编译错误。只需更改名称并享受 SwiftUI

编码