一尘不染

Swift项目,Xcode中的导入框架

swift

我正在尝试导入myFramework一个项目。我myFramework在“构建阶段”->“使用库链接二进制文件”中添加了内容。

Objective-C的作品:

#import <UIKit/UIKit.h>
#import <myFramework/myFramework.h>

但是在Swift中,我得到一个No such module myFramework错误:

import UIKit
import myFramework

根据Swift文档

导入外部框架

您可以导入具有纯Objective-
C代码库,纯Swift代码库或混合语言代码库的外部框架。无论框架是用单一语言编写还是包含两种语言的文件,导入外部框架的过程都是相同的。导入外部框架时,请确保将要导入的框架的“定义模块”构建设置设置为“是”。

您可以使用以下语法将框架导入不同目标中的任何Swift文件中:

迅速

import FrameworkName

您可以使用以下语法将框架导入不同目标中的任何Objective-C .m文件:

目标C

@import FrameworkName;

myFramework使用Xcode 5 创建。Xcode5没有“定义模块”构建设置。

问题出在哪里?


阅读 347

收藏
2020-07-07

共1个答案

一尘不染

如果我正确地理解了您的意见,那么您的框架没有单独的构建目标(您已经使用XCode 5对其进行了构建),并且将该框架包含在项目的构建目标中。

您所指的文档部分是关于 不同 目标中的框架的。由于您的框架位于项目的目标中,因此本文档的此部分不适用于此处。

在您的情况下,您无法在Swift文件中导入框架。这就是为什么您会收到错误消息 “ No such module myFramework”的原因
。myFramework不是模块,它是项目模块的一部分(默认情况下由产品名称确定)。因此,您框架中的类应可访问。

但是,您的框架是用Objective-
C编写的。所以,你必须做的是导入斯威夫特面临班在桥接头所描述这里

请注意,这与模块的Swift导入无关。桥接头文件中的import指令仅通知编译器将Objective-
C头文件“转换”为Swift语法,并使公共头对Swift可见。

那你现在应该怎么办?

  • 首先导入您对bridged-header感兴趣的头文件。您只需要导入将在Swift中与之交互的标头。

  • 在此阶段尝试编译您的项目。如果XCode找不到框架的头文件,则您的问题可能与Swift或XCode 6不相关,而通常是包含框架的问题。

  • 之后,尝试实例化您在桥接头(也许在AppDelegate.swift中)中导入的类。XCode自动完成功能应为您提供类型名称。

希望这可以帮助。

2020-07-07