问题标签 [objective-c-swift-bridge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
154 浏览

objective-c - 无法使用非 ASCII 字符创建 Swift 类

我正在尝试创建以下类:

但是,当我尝试编译时,出现以下错误:

'swift_name' 属性的参数必须是 ASCII 标识符字符串

这个错误在我的-Swift.h标题上,生成的代码是

这似乎是rdar://22737851中报告的错误。

有没有办法使用非ASCII字符来解决这个问题?

0 投票
4 回答
16934 浏览

ios - 如何修改 SWIFT_MODULE_NAME?

标题说明了一切。我在SWIFT_MODULE_NAME的构建设置中进行了搜索,但没有任何结果。我也在网上搜索过,有对这个名字的引用,但没有关于它是如何定义的信息。此外,我在 Apple Docs 中找不到任何提及 SWIFT_MODULE_NAME 的内容。

我确实知道:它在“Objective-C Generated Interface Header Name”构建设置中使用,可以通过双击设置值来查看:

$(SWIFT_MODULE_NAME)-Swift.h

它用于弥合 Objective-C 和 Swift 之间的鸿沟,并且仅出现在包含 Swift 文件的项目中(以及我认为的 Objective-C 文件)。在这篇文章中,Xcode 7.3 是最新最好的。

但是,这个值是在哪里定义的,我该如何修改它?

0 投票
1 回答
146 浏览

ios - 将swift文件导入obj-c

好吧,这对我来说太多了。我正在尝试从用 swift 编写的 socket-io 手动将文件导入到完全用 obj-c 编写的项目中。

我已经阅读了Swift 和 obj-c的文档,但这根本没有帮助。从socket-io,同样的事情。它所说的只是下载 github 项目,将“源”文件夹导入我的 obj-c 项目,然后按照 Apple doc 中的说明进行操作,我认为这完全不清楚。

我的问题是:swift模块的概念是什么?因为我明确地没有发现什么是概念上的模块,以及如何从 swift 文件的文件夹中构建它,即使我认为它是 swift 类的集合,但是对于 Apple,我什至不确定这一点。

我的项目结构如下:

那么如何将包含所有这些文件的整个“Source”文件夹导入到我的 viewController_0.m 中?我什至不知道如何将其编译为模块。或者,如果这是正确的方法。就像我说的,我现在处于迷茫状态。

感谢您提前回答。

注意 经过进一步研究,我已经放弃了。我所做的是单独编译整个 swift 项目并将其作为框架导入。但是,当然,Xcode 将框架作为一个胖二进制文件处理太多了。对不起,如果我看起来很糟糕,但我不明白为什么 Xcode 是一个非常糟糕的 IDE 工具。对于信息,我花了大约 1 分钟在我的 python 项目中导入 socketIO,而我用 Xcode 和源代码花了 3 个小时,我只是避开了这个问题,因为我所做的是二进制解决方案(Xcode 甚至不擅长自己制作一个简单的胖二进制文件。它需要 3 行脚本来实现)。我真的很讨厌。

0 投票
1 回答
414 浏览

objective-c - Xcode 7.3 找不到“Project-Swift.h”文件

假设我的项目被称为“项目”。我的实际项目名称也没有任何空格,所以这不是问题。

我知道要在 Obj-C 中使用 Swift 文件,您可以添加Project-Swift.h到 .m 文件中。

但是,我得到一个'Project-Swift.h' file note found错误。

我检查了我的构建设置,并在目标和项目中确保两者上的 Objective-C Generated Interface Header Name 都是明确的Project-Swift.h

此外,在目标和项目构建设置上,我再次将“定义模块”切换为“是”。

我还尝试完全删除我试图在其上创建此导入语句的目标 c 文件,然后创建一个新文件并复制并粘贴代码,以防 project.pbxproj 文件出现问题。

尽管我不需要在 Swift 中使用 Obj-C 代码,但我尝试创建一个“Project-Bridging-Header.h”并确保它在目标和项目的 Swift 编译构建设置中正确引用。

因此,为了跟进,我没有任何循环引用或任何需要前向声明的东西。

这一切似乎都是徒劳的。

我错过了什么?

0 投票
1 回答
2701 浏览

ios - 错误消息'预期; 在顶级声明符''未知类型名称导入'之后,在 Objective-C 中使用 Swift 的桥梁

当我尝试添加桥以在 Objective-C 中使用 Swift 时出现消息错误。

这是我的代码:

这是我在 Swift 中的桥梁:

这是我的 Objective-C 文件:

任何的想法?

0 投票
1 回答
557 浏览

ios - 如何将数据从一个 ViewController 发送到另一个具有 SWRevealViewController

我已经为 sideMenu 实现了 SWRevealViewController。我的项目是 Swift 而 SWRevealViewController 在 Objective-c 中。SWRevealViewController 不是初始视图控制器。有一个初始视图控制器(1VC),它在 SWRevealViewController 上具有 Push segue。另一个 ViewController (2VC) 充当 FrontView。我想将数据从(1VC)传递到(2VC)。但我找不到任何办法

在此处输入图像描述 这是我的 Stroyboard

0 投票
4 回答
7609 浏览

ios - 错误,桥接头 test.h 不存在

所以我快疯了,因为我不断收到标题中描述的错误,而我什么也没做。

我将向您展示我的尝试:

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

我还可以做些什么?

请帮忙。

0 投票
1 回答
80 浏览

objective-c - WhirlyMaply 缺少 MaplyBridge.h

我正在尝试将 WhirlyMaply 用于个人项目。我试图按照他们的教程进行操作,他们提到我必须有一个桥接文件,因为代码是用 Objective-C 编写的,而且我正在用 Swift 编写我的项目。

但是没有按照他们的说明找到 MaplyBridge.h 文件...

以下是链接http://mousebird.github.io/WhirlyGlobe/tutorial/building_from_source.html

0 投票
1 回答
525 浏览

swift - 如何从一组颜色和浮点数创建 NSGradient?

我有一个NSColors 数组,还有一个 s 数组CGFloat表示梯度停止。我不知道如何使用这些数组来初始化NSGradient.

我尝试将它们制作成一个 s 数组(NSColor, CGFloat),但NSGradient(colorsAndLocations:不会接受它,因为它需要可变参数:

代码 <code>let gradient = NSGradient(colorsAndLocations: colorsAndLocations)</code> 产生错误 <code>Cannot convert value of type '[(NSColor, CGFloat)]' to expected argument type '(NSColor, CGFloat)'< /代码>

并且NSGradient(colors:, atLocations:, colorSpace:)期望一个UnsafePointer我不知道如何在 Swift 中正确处理的,如果有的话。

0 投票
0 回答
272 浏览

objective-c-swift-bridge - 桥接失败时的 objc NSData 与 Swift Data

我不太确定这是一个愚蠢的新手问题,所以我将其保留在主题行之外;-) 我的应用程序有一些 objC 框架正在通过桥接头进行桥接。我在运行时看到的一个问题与 objC NSData 对象长度属性与 Swift 数据计数属性有关。

在这种情况下,框架中的代码行如下所示

请求对象的接口是这样的……</p>

接口 AEServiceRequest : NSObject

属性(非原子,只读,强,可空) NSData *requestBody;

当应用程序运行并询问长度方法(也是.length)时,下面抛出异常,好像长度调用没有转换为计数但 NSData 对象确实转换为数据。只是一个猜测。有没有人在他们的经历中看到过这种事情?有没有我想念的解决方法?

我在框架代码中添加了一些 NSLogs 以进行跟踪...

AEDAService: AEService 1.4.2 init started... 2016-08-25 14:12:44.592 AEDemoApp_Swift_OSX[24703:4124653] 进入:_urlRequest 2016-08-25 14:12:44.592 AEDemoApp_Swift_OSX[24703:4124653] 开始调用:if (request.requestBody.length > 0 2016-08-25 14:12:44.592 AEDemoApp_Swift_OSX[24703:4124653]-[_SwiftValue 长度]:无法识别的选择器发送到实例 0x61800004c480 2016-08-25 14:12:44.593 AEDemoApp_Swift_OSX[22: 4124653] 引发未捕获的异常 2016-08-25 14:12:44.593 AEDemoApp_Swift_OSX[24703:4124653]-[_SwiftValue 长度]:无法识别的选择器发送到实例 0x61800004c480 2016-08-25 14:12:44.593 AEDemoApp_Swift_OSX [24703:41_24Swift_ ] ( 0 CoreFoundation 0x00007fff942d04f2 __exceptionPreprocess + 178 1 libobjc.A.dylib 0x00007fff8c9a873c objc_exception_throw + 48 2 CoreFoundation 0x00007fff9433a1ad -[NSObject(NSObject) doesNotRecognizeSelector:] + 205

任何人以前都见过这种行为。顺便说一句,使用带有 Swift 3 的 xCode 8 beta 6