gpt4 book ai didi

ios - 在 Swift 项目、Xcode 中导入框架

转载 作者:IT王子 更新时间:2023-10-29 04:59:58 25 4
gpt4 key购买 nike

我正在尝试将 myFramework 导入到项目中。我在 Build Phases->Link Binary With Libraries 中添加了 myFramework

Objective-c 有效:

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

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

import UIKit
import myFramework

根据Swift documentation :

Importing External Frameworks

You can import external frameworks that have a pure Objective-C codebase, a pure Swift codebase, or a mixed-language codebase. The process for importing an external framework is the same whether the framework is written in a single language or contains files from both languages. When you import an external framework, make sure the Defines Module build setting for the framework you’re importing is set to Yes.

You can import a framework into any Swift file within a different target using the following syntax:

SWIFT

import FrameworkName

You can import a framework into any Objective-C .m file within a different target using the following syntax:

OBJECTIVE-C

@import FrameworkName;

我使用 Xcode 5 创建了 myFramework。Xcode 5 没有“定义模块”build设置。

问题出在哪里?

最佳答案

如果我没听错的话,你的框架没有单独的构建目标(你已经使用 Xcode 5 构建了它)并且将框架包含在项目的构建目标中。

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

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

但是您的框架是用 Objective-C 编写的。因此,您需要做的是按照 here 所述,在您的桥接 header 中导入面向 Swift 的类。 .

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

那么你现在应该做什么?

  • 首先在bridging-header中导入你感兴趣的头文件。您只需导入将在 Swift 中交互的 header 。

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

  • 之后尝试实例化您在桥接 header 中导入的类,也许在您的 AppDelegate.swift 中。 Xcode 自动完成应该为您提供类型名称。

希望这对您有所帮助。

关于ios - 在 Swift 项目、Xcode 中导入框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24057756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com