问题标签 [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.
objective-c - 无法使用非 ASCII 字符创建 Swift 类
我正在尝试创建以下类:
但是,当我尝试编译时,出现以下错误:
'swift_name' 属性的参数必须是 ASCII 标识符字符串
这个错误在我的-Swift.h
标题上,生成的代码是
这似乎是rdar://22737851中报告的错误。
有没有办法使用非ASCII字符来解决这个问题?
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 是最新最好的。
但是,这个值是在哪里定义的,我该如何修改它?
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 行脚本来实现)。我真的很讨厌。
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 编译构建设置中正确引用。
因此,为了跟进,我没有任何循环引用或任何需要前向声明的东西。
这一切似乎都是徒劳的。
我错过了什么?
ios - 错误消息'预期; 在顶级声明符''未知类型名称导入'之后,在 Objective-C 中使用 Swift 的桥梁
当我尝试添加桥以在 Objective-C 中使用 Swift 时出现消息错误。
这是我的代码:
这是我在 Swift 中的桥梁:
这是我的 Objective-C 文件:
任何的想法?
objective-c - WhirlyMaply 缺少 MaplyBridge.h
我正在尝试将 WhirlyMaply 用于个人项目。我试图按照他们的教程进行操作,他们提到我必须有一个桥接文件,因为代码是用 Objective-C 编写的,而且我正在用 Swift 编写我的项目。
但是没有按照他们的说明找到 MaplyBridge.h 文件...
以下是链接http://mousebird.github.io/WhirlyGlobe/tutorial/building_from_source.html
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