首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Swift框架-在Objective类中使用Swift类引用

Swift框架-在Objective类中使用Swift类引用
EN

Stack Overflow用户
提问于 2018-10-08 01:13:23
回答 2查看 2.3K关注 0票数 0

我正在创建Swift框架,在其中我必须使用Objective类。所以我浏览了链接。这是我的框架的公共标题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import <UIKit/UIKit.h>

//! Project version number for Test.
FOUNDATION_EXPORT double TestVersionNumber;

//! Project version string for Test.
FOUNDATION_EXPORT const unsigned char TestVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <Test/PublicHeader.h>

#import <arpa/inet.h>
#import <ifaddrs.h>
#import <netdb.h>
#import <sys/socket.h>
#import <MyTest/MPAppDelegateProxy.h>  

现在,在MPAppDelegateProxy,类中,我必须使用我创建的Swift类。这是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import "MPAppDelegateProxy.h"
#import "MyTest.h"

@implementation MPAppDelegateProxy

+ (void)proxyAppDelegate {
    [MPGlobal MPLog:@"App delegate not set, unable to perform automatic setup." file:@"MPAppDelegateProxy.m" function:@"proxyAppDelegate" line:32];
// rest of code
}  

MPGlobal是我的Swift课程之一。但我得到了:

未声明标识符“MPGlobal”的使用

注:我在MPGlobal之前添加了@objC

EN

回答 2

Stack Overflow用户

发布于 2018-10-08 01:19:56

您需要导入<Target>-Swift.h文件。这被称为Objective生成的接口头名。

您可以在目标的构建设置中找到它。

这个文件是由编译器自动生成的,需要导入到Objective文件中.

票数 0
EN

Stack Overflow用户

发布于 2018-10-08 01:40:25

更改SWIFT_OBJC_INTERFACE_HEADER_NAME构建设置,并使其在不同目标之间保持相同。为此,请将生成此属性的指令从$(SWIFT_MODULE_NAME)-Swift.h更改为$(PROJECT_NAME)-Swift.h,如解释的这里所示

完成此操作后,按Alt并进入“产品”菜单,即可创建“清洁生成”文件夹。由于头的名称在目标之间共享,现在可以在.m ObjectiveC文件中导入一次,所有目标都可以从Swift类中受益。

如果在构建后仍然显示错误,请确保通过Cmd单击其名称可以从XCode到达标头。它应该打开一个包含类似于以下代码的文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SWIFT_CLASS("_TtC27ProjectName_Summary11MyClass")
@interface MyClass : NSObject
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

如果需要确保生成这些标头,则打开一个终端并使用以下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
find ~/Library/Developer/Xcode/DerivedData -name "*Swift.h"

您应该看到每个目标的一个标头。

在这些更改之后发生在我身上的另一个问题是,它开始在ObjectiveC代码上产生我没有接触到的错误。这个问题是由于进口的位置造成的,据报道是这里

在.m文件顶部,您#导入隐藏的桥接标头的位置可能会有所不同。常见的问题迹象是,您得到了一个“未知类型名称”编译错误,其中未知类型是在Objective中声明的类。解决方案是#导入目标-C文件中包含未知类型声明的.h文件,然后再导入隐藏的桥接头。如果目标-C文件不需要知道这个类,但是它解决了这个问题并允许编译进行,那么必须这样做可能会带来麻烦。

最后,代码在设备和模拟器上编译和运行!

原始答案

您也可以尝试这样做,您需要为框架和应用程序目标导入-Swift.h。

例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <Foundation/Foundation.h>
#import "XLPagerTabStrip-Swift.h"
#import "RealmSwift-Swift.h"
...... // Add all frameworks, subclasses, and dependance ios frameworks
#import  "MyProject-Swift.h"

您可以阅读文章如何导入文件头和检查路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52698951

复制
相关文章
ruby on rails使用笔记
如果升级过程中说xcode版本太低 还得先升级xcode 重启电脑后继续升级ruby 升级完系统依然报错说xcode版本太低可以使用以下命令切换xcode版本
lilugirl
2019/05/28
1.1K0
使用rails实现最简单的CRUD
这里定义了路由hello/index,并且使用root方法将首页修改为了hello控制器下的index方法,也就是两路由的控制器一致。
用户1515472
2019/07/24
3.2K0
使用spring提高rails开发效率
###声明 目前spring只支持MRI 1.9.3, MRI 2.0.0, Rails 3.2,没有达到要求的人赶紧升级你们的ruby,rails版本吧 ###问题 想必采用TDD/BDD方式进行开发的rails开发者都有着这样类似的经历: pair写了一个测试 运行测试 等待 该我来编写产品代码 运行测试 等待 代码有bug 测试失败 修复测试 运行测试 等待 测试通过,yeah! 再回过头来想想,我享受这段pair的过程吗? pair很给力,很快就把一个taks实现成一个测试用例 桌子上的水果也很好吃
ThoughtWorks
2018/04/18
3.5K1
28.多表查询——跨关联关系的多表查询
Django 提供一种强大而又直观的方式来“处理”查询中的关联关系,它在后台自动帮你处理JOIN。 若要跨越关联关系,只需使用关联的模型字段的名称,并使用双下划线分隔,直至你想要的字段:
全栈程序员站长
2022/09/04
1K0
Debian 8 使用 Apache 部署 Ruby on Rails
Ruby on Rails 是一个快速开发的Web框架,Web设计人员和开发人员利用它能实现动态的全功能Web应用程序。 本文使用 Phusion Passenger 或mod_rails 方法部署 Rails 应用程序。 Passenger 允许您直接在Apachen应用程序中嵌入 Rails 应用程序,而无需使用FastCGI或复杂的Web服务器代理。
Debian中国
2018/12/20
2.6K0
如何使用Passenger和Nginx部署Rails
如果您是Ruby on Rails开发人员,可能需要Web服务器来托管您的Web应用程序。本教程将向您展示如何使用Phusion Passenger。作为Rails的Web服务器,Passenger易于安装,配置和维护,可与Nginx或Apache一起使用。在本教程中,我们将在Ubuntu上安装带有Nginx的Passenger。
乌鸦
2018/08/06
5K0
如何使用Passenger和Nginx部署Rails
rails -help
rails new APP_PATH [选项] //APP_PATH项目名称
不知雨
2018/11/13
2.6K0
依赖关系(“使用”关系)
依赖关系是一种使用关系,如果A类中的某个方法使用了B类对象,那么就可以说A类依赖B类。
全栈程序员站长
2022/09/06
1.1K0
C - Rails
C - Rails C - Rails #include<cstdio> #include<stack> #include<cstring> using namespace std; int a[1010]; int main() { int n; while (~scanf("%d",&n) && n) { while (1) { stack<int> s; scanf("%d",&a[0]); if (!a[0]) { puts(""); brea
杨鹏伟
2020/09/11
6820
Rails资源
Rails Resources Here I list some rails resources I found very helpful. Quick Start Ruby on Rails Guides Rails Bridge Tutorials Point Book The Rails 4 Way, Best rails book. Ruby on Rails Tutorial API Ruby on Rails API Screencast Rails Casts, excellent rai
用户2183996
2018/06/28
8520
【MySQL】多表练习、查询以及多表的关系
实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(product)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系,接下来我们将在单表的基础上,一起学习多表方面的知识。
陶然同学
2023/02/24
2.6K0
【MySQL】多表练习、查询以及多表的关系
ODOO优化层级关系查询效率的方法
本文介绍了ODOO优化层级关系查询效率的方法,通过使用字段来关联上层记录、开启分层搜索功能和添加数值标识来提高查询效率。同时,本文还提供了相关的代码示例和图例,方便读者更好地理解。此外,本文还介绍了使用parent存储特性提高查询效率的方法,通过空间换时间的方式,提高了数据库查询的效率。
企鹅号小编
2017/12/29
2.3K0
ODOO优化层级关系查询效率的方法
Ruby On Rails 4 hello world,Ruby On Rails上手
有机会再试一试Rails了,仅仅是原来接触的是2,如今已然变成了4,似乎如今的安装比原来会快些。。
全栈程序员站长
2022/07/12
2.5K0
Ruby On Rails 4 hello world,Ruby On Rails上手
并行一度关系查询
[1] TOC: 并行一度关系查询 [2] 并行一度关系查询问题: http://neo4j.com.cn/topic/61663f0703dea95514def0aa
马超的博客
2022/09/02
6510
并行一度关系查询
Rails路由
在创建资源路由时,会同时创建多个可以在控制器中使用的辅助方法,如上面的资源路由会创建以下方法:
用户1515472
2019/07/24
4.5K0
Rails测试:Rspec
One: Case Study Debug sucks, and test rocks! If you use rails, then you should know how to use RSpec to test your rails app. I use a simple case to practice basic RSpec. If you want practice, go to check the saasbook/bdd-tdd-cycle practice at the end of th
用户2183996
2018/06/28
1.1K0
SQL 基础(六)多关系连接查询
连接类型:内连接(INNER JOIN)、外连接(OUTER JOIN)、交叉连接()、自然连接()
攻城狮杰森
2022/06/03
1.2K0
SQL 基础(六)多关系连接查询
Rails 部署总结
学 Ruby 和 Rails 有一段时间了,后面准备也准备把站点换了。不过开始开发之前,我先把 Rails 部署的坑先踩了。之所以部署先行是因为之前 Django 部署把我坑惨了,导致之前写的 Django 代码还是 Github 静静地躺着。 忽悠妹子给我在腾讯云买了服务器后,马不停蹄的就开始了填坑之旅。这里我选择的系统是 Ubuntu 16.04 ,所以下面的命令以此为准。
BigNerdCoding
2018/03/20
7K4
Rails 部署总结
使用rvm在Mac中安装ruby和rails
MacOS默认安装的是ruby 1.8.7,如果你想使用ruby 1.9.2的话,除了在官网下载源码编译安装外,可以使用rvm来协助安装。
EltonZheng
2021/01/22
3.2K0
在Debian 9上使用Apache安装Ruby on Rails
Ruby on Rails是一个服务器端Web应用程序框架。它维护了一组策划组件和“约定优于配置”的理念,使得我们可以快速开发应用程序而无需大量样板。本指南将向您展示如何使用Phusion Passenger在您的Linode上部署Rails应用程序。Passenger允许您直接在Apache应用程序中嵌入Rails应用程序,而无需担心FastCGI或复杂的Web服务器代理。
GIStudy
2018/08/28
5.8K0

相似问题

查询Rails中关系的关系

12

使用活动记录的rails关系查询

10

Rails:使用关系或直接使用#where查询

25

要查询的复杂rails关系

11

带有嵌套关系的Rails查询

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文