【问题标题】:Xcode Ignoring importXcode忽略导入
【发布时间】:2019-10-23 15:19:33
【问题描述】:

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

无法成功构建和运行。

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

ContentView.swift

使用未声明的类型'View'

SceneDelegate.swift

使用未解析的标识符“UIHostingController”

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

【问题讨论】:

  • 你是 macOS 10.15 吗?
  • 不使用版本 10.14.5

标签: swift xcode import


【解决方案1】:

您的项目名为 SwiftUI - 请尝试使用其他名称。

【讨论】:

  • 是的,让我换个名字试试
  • 它现在可以工作了我忘了我们不能使用类名:)
  • @PinkeshGjr 应用程序仍然是Swift module - 它在实际框架之前被解析为依赖项。所以import SwiftUI 表示import the app module,因此 Xcode 忽略了导入
  • 我在创建名为 CoreData 的 MacOs/SwiftUI 项目时遇到了同样的问题!
【解决方案2】:

尝试使用不同的项目名称。 SwiftUI 总是会显示编译错误。只需更改名称并享受使用 SwiftUI

的编码

【讨论】:

  • 您基本上重新输入了 Matteo 的答案。不要在没有有意义的目的的情况下重复答案。
【解决方案3】:

详细解答

您创建的每个项目都有一个与项目同名的module。所以这里有两个 SwifUI模块:

  1. 实际SwiftUI
  2. 项目本身

Xcode 总是将最近的定义作为默认值。所以你的SwiftUI 比系统的SwiftUI 更近。但是您已经在项目的模块中了!所以 Xcode 忽略了导入。

一个非常常见的错误是将项目命名为与使用的框架之一相同! (例如CoreData、SwiftUI、SceneKit、Metal)

解决方案

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


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

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

因为 Xcode 对模块感到困惑,无法检测出真正的问题。


我们如何访问我们模块的类而不是系统的模块?

假设您在名为 MyProject 的自定义框架中有一个名为 Section 的 class,并且您将它与 SwiftUI 一起导入。

import SwiftUI
import MyProject

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

为了让编译器(和其他任何人)更清楚,你应该在类名之前调用模块:

SwiftUI.Section // <- This returns the SwiftUI's Section

MyProject.Section // <- This returns the MyProject's Section

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 2018-11-20
    相关资源
    最近更新 更多