问题标签 [bridging-header]
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.
swift - Obj-C 的 Swift 桥接头
我已经Card.IO
通过CocoaPods
. 我的工作区看起来设置正确,我看到了Card.IO
Objective-C
头文件,但是当我在我的主Swift
项目中尝试引用任何Card.IO
类时 - 我得到了未解决的标识符错误。
编辑 我的理解是Xcode
找不到桥接头:
该文件指出
在 Build Settings 中的 Swift Compiler - Code Generation 中,确保下的 Objective-C Bridging Header 构建设置具有桥接头文件的路径。该路径应该与您的项目相关,类似于在 Build Settings 中指定 Info.plist 路径的方式。在大多数情况下,您不需要修改此设置。
这对我来说没有意义 - 所以不确定在哪里放置路径?我已将以下内容添加到Build Settings > Search Paths > Header Search Paths > Debug & Release
但这似乎不正确?
ios - 导入 AzureMobileServices 框架和 Bridging-Header
我已经尝试了一百万种不同的方法将 AzureMobileServices 框架导入 XCode,但仍然出现错误。所以我遵循了微软提供的指南,这非常简单:
- 下载 SDK 并将文件添加到项目中的新组(框架)。
创建桥接头:projectName-Bridging-Header 并添加以下导入:
#import <WindowsAzureMobileServices/WindowsAzureMobileServices.h>
我没有收到任何错误消息,但我不能使用实际的库,因为导入中的某些东西做错了。我已经多次检查了我添加的快速编译器行是正确的,并且我没有错过在导入时拼写的任何内容。
提前谢谢你!:)
swift - CocoaPod 将 Objective-C 框架导入 Swift 项目时,桥接头中出现“找不到文件”
我有一个 swift 项目,并使用 CocoaPod 导入第三方存储库。在我使用的 pod 文件use_frameworks!
中,因此存储库将构建到框架中使用。我像#import ""
或#import <>
在我的桥接头中导入 ObjC 框架。
在这种情况下,我运行该项目,它可以工作。但是当我存档时,在桥接头文件中找到“找不到文件”。
和
我该如何解决这个问题?
ios - 由于无法在 SF SDK 中找到类别,将 ObjC 项目与 SalesForce SDK 桥接会导致崩溃
我有一个名为 Core.proj 的 iOS 项目,其中包括 SalesForce SDK,它是用 Objective-C 编写的。该项目利用 SF SDK 并将二进制文件链接到 SF 库。它做了很多事情来帮助管理我的 SF 实施。它包含在我的所有其他 Obj-C 项目中,并且在其中工作得非常好。
这是我第一次将这个项目与 Swift (2.1) 一起使用。我正在使用带有 Xcode 7.1.1 的 iOS 9。我将 Core.xcodeproj 添加到我的 Swift 项目中。然后我创建了一个 ObjC 文件。Xcode 然后询问我是否要创建一个桥接头。我愿意。我创建了一个名为 Swift-Bridging-Header.h 的桥接头。这使我能够通过桥接头访问 Core.xcodeproj 中的文件。例如,我可以从桥接头访问我自己版本的 Salesforce 身份验证管理器。
在我的应用程序委托中,我现在想启动 OAuth(我在这里保持最小化):
完全披露:您在此处看到的每个块都将 SFOAuthInfo 对象作为参数。为了让 Swift 读取这个块,我必须将 SFOAuthInfo.h 添加到复制文件中。
现在这一切都编译好了,但是当我点击登录并执行上面的代码时,我收到以下错误:
SF SDK 有一个名为 UIDevice+SFHardware.h 的类别。在此类别中,有一种称为“macaddress”的方法。很明显,它没有正确阅读这个类别。但为什么?正如您从堆栈跟踪中看到的那样,它正在正确读取 SF SDK 中的其他文件。
我尝试了很多方法来让它发挥作用。例如,这个:iOS - UUID 生成抛出一个奇怪的异常,但使用 UIDevice+SFHardware.h。我试过这个:https ://developer.salesforce.com/forums/?id=906F00000009CBvIAM 。我再次完全重建项目以检查我的工作。
我不需要将此文件添加到我的网桥中,因为此 UIDevice+SFHardware.h 只能从位于 ObjC 项目中的 SF SDK 访问。
不过,我一定做错了什么。任何帮助将不胜感激。
objective-c - 从 Objective-C 到 Swift 的 Swift 传递块
我在 Objective-C 中有一个方法,它接受一个参数并在一个块中返回一个结果。如何通过桥接头将此结果返回到 swift 块?注意我有其他非块函数返回,这工作正常。
Objective-C
桥接头
迅速
ios - 在 Objective C 文件中导入 ViewController.swift
我正在尝试在我现有的目标 C 项目中使用我的新 ViewController.swift 文件。
下面是快速文件代码
下面是目标 C 代码
我无法导入快速代码。我已经按照这个
请让我知道,我在哪里犯错了。它是否仅适用于 NSObject 类。
提前致谢
objective-c - 在 Swift 中使用返回 Optional 或 Throw 的 Objective-C 函数
我正在开发一个需要与现有的objective-c api交互的快速项目。不过,我在其中一个功能上遇到了一些障碍。在objective-c头文件(OrderItem.h)中,我有这个函数定义:
特别要注意最后一个参数;因为它是一个错误指针,所以在 swift 中调用此方法需要包装在错误处理程序中(do .. catch)。
这是相应的 .m 文件:
然后在我的 swift 文件中添加了以下代码:
没有什么特别复杂的;对 getOptional 的两次调用实际上都不应该导致错误。但是,当我运行该功能时,“123”案例正在爆炸并导致测试失败。当我仔细观察时,似乎我的objective-c 的桥接版本将返回类型定义为Nonnull (-> OrderItem),即使我在objective-c 中明确将其定义为Nullable。更奇怪的是,如果我在没有最终的“错误”参数的情况下声明相同的函数,那么桥接版本将具有正确的返回类型 Nullable (-> OrderItem?)。
有人可以阐明这里发生了什么吗?更重要的是,有没有办法解决这个问题?
objective-c - Swift 不会为协议生成前向声明
我在 obj-c 应用程序使用的框架中定义了一个 swift 类。
生成的 -Swift.h 标头包含用 @objc 标记的 swift 类,但有一个属性会导致编译失败。
这个属性在 swift 代码中是这样定义的:
所以生成的 obj-c 属性看起来像这样
但是 Xcode 在这里不接受“StorageProtocol”符号,因为前向声明“@protocol StorageProtocol;” 不见了。
如果我添加一个像这样定义的新变量:
前向声明添加在定义这些属性的类之上,并且 -Swift.h 编译成功。
所以它看起来像 -Swift.h 一代中的一个错误,但是有没有另一种方法可以在不使用虚拟 var 的情况下强制进行前向声明?
ios - 未找到 Swift 桥接头文件
我在将一些标头从 CocoaPods 和外部库 (ConnectSDK) 导入到我的桥接头时遇到了一些问题。
我收到以下错误:
'MZFormSheetPresentationController/MZFormSheetPresentationController Swift Example-Bridging-Header.h' file not found
我的 Pods 框架与我的目标的链接很弱。
任何帮助真的很感激,这让我摸不着头脑。
更新:下面是我的桥接头
c - Swift 项目中的 C 代码
我有一个 C 程序,我想从 swift 打印它的输出,当它扫描时,我可以通过 Swift 给它输入。这样的事情可能吗?我用一个简单的函数尝试了这个,它起作用了,但是有人怎么能用许多不同的函数来调用其他函数呢?
我知道这个问题有点模糊,但有人能指出我正确的方向吗?
代码示例: