当前位置: 首页 > 面试题库 >

Swift项目,Xcode中的导入框架

燕翼
2023-03-14
问题内容

我正在尝试导入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没有“定义模块”构建设置。

问题出在哪里?


问题答案:

如果我正确地理解了您的意见,那么您的框架没有单独的构建目标(您已经使用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自动完成功能应为您提供类型名称。

希望这可以帮助。



 类似资料:
  • 问题内容: 我将swift框架导入到Objective-C项目中,如下所示: 问题在于我正在导入框架的类只能识别某些类。 被认可的课程: 该类不是: 它们都是公开的,那么为什么第一个在工作空间中被识别,而另一个却没有? 我也在头文件MyFramework-Swift.h中看到一个类 出现而其他不出现 这是为什么? 另外要指出的是,当我将swift框架导入swift项目时,该相同的程序也可以工作 问

  • 我正在使用Xcode 6,并遵循Xcode版本4的教程,所以事情在这里和那里是不同的。 我的项目导航器中似乎没有框架文件夹,因此当我下载一些.framework文件并在项目编辑器的构建阶段手动添加它们时,我没有框架文件夹可保存它们,只是让它们落在项目导航器的顶部。所以它们就在那里,只是不在一个特殊的文件夹里,看起来不太好。 那么Xcode 6应该自动拥有一个框架文件夹,还是我需要自己创建一个?如果

  • 问题内容: 我是快速编程的新手。我需要创建一个纯swift框架,并将其导入 到我现有的纯swift项目中。当我尝试导入swift框架时,出现 以下错误消息: Test.h Asdf.h myModule-Swift.h 构建框架后,我在现有项目中添加了框架并得到了这个项目结构和导入问题屏幕 我究竟做错了什么?感谢帮助! @findall评论答案-我试图将所有框架文件添加到我的项目根文件夹和项目文件

  • 问题内容: 我已经使用Xcode 6和快速语言创建了一个示例项目。 Xcode使用以下代码创建了AppDelegate.swift @NSApplicationMain是什么意思,带有main()的main.mm/main.m文件在哪里? 问题答案: 如发行说明中所述: OS X应用程序现在可以将@NSApplicationMain属性应用于其应用程序委托类,以便为该应用程序生成隐式主程序。此属性

  • 问题内容: 我有一个Objective- C框架(框架A),该框架公开了一些公共和私有标头。公共头文件也在框架的伞头文件中声明。我有第二个Swift框架(框架B),它与Objective- C框架链接。 现在,如果要在BI中导入A的公共标头,只需要做一个即可。 但是,如何导入私有标头呢? 我知道桥接头不是一个选择,因为框架不支持该头。我是否需要以某种方式为专用标头创建一个单独的伞形标头? 问题答案

  • 问题内容: 我有一个Swift项目,正在尝试导入基于ObjC的框架。该框架位于项目路径下的目录中,并由项目在Xcode中引用。它也已添加到项目“构建阶段”页面的“链接二进制文件与库”中。 但是,由于某种原因,我似乎无法在Bridging-Header文件中包括该框架。我收到以下错误: 我检查过的事情: “安装Objective-C兼容性标头”设置为“是”。 标题搜索路径包括框架的路径。 我确定我会