没有这样的模块 'Ensembles' 错误 - 导入 objective-c 框架以在 swift 项目中使用
No Such Module 'Ensembles' Error - importing objective-c framework to use in swift project
我正在将 Ensembles 添加到我的 Swift 项目中 - 可在此处 https://github.com/drewmccormack/ensembles 找到。我没有为我的应用程序添加 iCloud 支持并跨设备同步数据,所以希望这能奏效。
我已按照以下说明将框架添加到我的应用程序,
- 在 Finder 中,将 Ensembles iOS.xcodeproj 项目从
Framework 目录到您的 Xcode 项目中。
- Select 左侧源列表中您应用程序的项目根目录,然后select 应用程序的目标。
- 在“常规”选项卡中,单击“已链接”中的 + 按钮
框架和库部分。
- 选择 libensembles.a 库并添加它。
Select 构建设置选项卡。找到其他链接器
标志设置,并添加标志-ObjC。
这是我项目中的样子,我不确定我是否正确完成了这一步。
- Select 构建阶段选项卡。
打开 Target Dependencies,然后单击 + 按钮。
- 找到
Ensembles Resources iOS 产品,并将其添加为依赖项。
- 在源列表中打开 Ensembles iOS.xcodeproj 项目,然后打开 Products 组。
- 将Ensembles.bundle产品拖入复制
应用程序的 Bundle Resources 构建阶段。
- 在预编译的 header 文件或使用 Ensembles 的任何文件中添加以下导入。
我在第 10 步遇到了问题。我是否必须创建桥接 header 或仅将框架导入我的 swift 文件?
这就是我在 CoreDataStack.swift
文件中导入的方式
import UIKit
import CoreData
import Ensembles
class CoreDataStack: NSObject, CDEPersistentStoreEnsembleDelegate {
}
这给了我错误;
No such module 'Ensembles'
我尝试通过执行以下操作创建桥接 header;
- 添加新的header文件
- 导入合奏
这是它的样子;
#ifndef Header_h
#define Header_h
#import <Ensembles/Ensembles.h>
#endif /* Header_h */
但仍然没有运气,有人知道我在尝试导入框架以用于我的 swift 项目时哪里出了问题吗?
创建桥接时 header 您不需要使用导入。
但是我认为您可能没有正确添加桥接 header,转到文件,新建文件,添加一个 objective-C 文件,然后会弹出一个对话框询问您是否想创建一个桥接 header。添加这两个文件,但删除 objective-C 文件并保留桥接 header。
然后像这样将集成框架导入桥接header。
#import <Ensembles/Ensembles.h>
成功创建桥接文件后,您不需要在 swift 文件中导入框架,它应该在整个项目中可用。有关详细信息,请参阅此 post - Connect Objective C framework to Swift iOS 8 app (Parse framework)
我正在将 Ensembles 添加到我的 Swift 项目中 - 可在此处 https://github.com/drewmccormack/ensembles 找到。我没有为我的应用程序添加 iCloud 支持并跨设备同步数据,所以希望这能奏效。
我已按照以下说明将框架添加到我的应用程序,
- 在 Finder 中,将 Ensembles iOS.xcodeproj 项目从 Framework 目录到您的 Xcode 项目中。
- Select 左侧源列表中您应用程序的项目根目录,然后select 应用程序的目标。
- 在“常规”选项卡中,单击“已链接”中的 + 按钮 框架和库部分。
- 选择 libensembles.a 库并添加它。
Select 构建设置选项卡。找到其他链接器 标志设置,并添加标志-ObjC。
这是我项目中的样子,我不确定我是否正确完成了这一步。
- Select 构建阶段选项卡。 打开 Target Dependencies,然后单击 + 按钮。
- 找到 Ensembles Resources iOS 产品,并将其添加为依赖项。
- 在源列表中打开 Ensembles iOS.xcodeproj 项目,然后打开 Products 组。
- 将Ensembles.bundle产品拖入复制 应用程序的 Bundle Resources 构建阶段。
- 在预编译的 header 文件或使用 Ensembles 的任何文件中添加以下导入。
我在第 10 步遇到了问题。我是否必须创建桥接 header 或仅将框架导入我的 swift 文件?
这就是我在 CoreDataStack.swift
文件中导入的方式
import UIKit
import CoreData
import Ensembles
class CoreDataStack: NSObject, CDEPersistentStoreEnsembleDelegate {
}
这给了我错误;
No such module 'Ensembles'
我尝试通过执行以下操作创建桥接 header;
- 添加新的header文件
- 导入合奏
这是它的样子;
#ifndef Header_h
#define Header_h
#import <Ensembles/Ensembles.h>
#endif /* Header_h */
但仍然没有运气,有人知道我在尝试导入框架以用于我的 swift 项目时哪里出了问题吗?
创建桥接时 header 您不需要使用导入。
但是我认为您可能没有正确添加桥接 header,转到文件,新建文件,添加一个 objective-C 文件,然后会弹出一个对话框询问您是否想创建一个桥接 header。添加这两个文件,但删除 objective-C 文件并保留桥接 header。
然后像这样将集成框架导入桥接header。
#import <Ensembles/Ensembles.h>
成功创建桥接文件后,您不需要在 swift 文件中导入框架,它应该在整个项目中可用。有关详细信息,请参阅此 post - Connect Objective C framework to Swift iOS 8 app (Parse framework)