问题标签 [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.
ios - “导入桥接头失败”iOS 单元测试
我有一个带有 2 个开发目标和 1 个单元测试目标的 iOS 项目。开发目标是混合的(同时使用 Objective-c 和 Swift),因此我必须Bridging-Header.h
在项目中使用。
问题是当我想使用以下代码将模块导入我的单元测试类时:
通过添加上述行,单元测试将停止构建并输出以下错误:
导入的 Objective-c pod 似乎存在一些问题。解决问题的任何帮助表示赞赏。
PS:我的Podfile
:
objective-c - 在混合的 objc/swift 模块中,Xcode 总是尝试包含模块本身
这一点不好解释,但也很烦人。
我正在使用 objc 和 swift 源开发 Cocoapods 框架(处于开发模式)。我们称之为“ SuperCompoment ”框架
Xcode 自动生成SuperComponent-Swift.h
文件,以使 Objc 类在 Swift 中可见。
一些 Objc 类还包括 Swift 类。
在编译时,在SuperComponent-Swift.h
Xcode 中添加该行
...并且无法使用以下消息进行编译:SuperComponent/SuperComponent.h file not found
Xcode 试图将框架包含在框架本身中!
如果我通过注释#import 手动编辑自动生成的文件,项目编译完美。但是 Xcode 会在每次清理之后和归档项目之前自动生成文件!
有什么线索吗?
objective-c - 从另一个 Swift 类访问在 Obj-C 类中实现的 Swift 协议属性
我已经看到了很多关于在 Swift 中实现 Obj-C 协议的问题,但反过来却没有,而且我还没有具体看到这一点。
我正在使用混合的 Obj-C / Swift 代码库。我有一个定义如下的 Swift 协议:
NamedItem.swift
我有一个现有的 Objective-C 类,它目前有自己的name
属性:
MyObjcClass.h
我还有其他几个具有name
属性的类,所以显然我想将它们都与一个协议相关联,而不是对一堆不同的类型进行类型转换。现在,如果我尝试将我的 Obj-C 类从拥有自己的属性切换到实现 Swift 协议:
MyObjcClass.h
MyObjcClass.m
这在我的其他 Objective-C 类中效果很好,但是如果我尝试从 Swift 类中访问 name 属性:
SomeSwiftClass.swift
我收到以下错误:
“MyObjcClass”类型的值没有成员“名称”
如果我不删除现有@property
声明MyObjcClass.h
并省略该@synthesize
语句,一切都会正确构建。这似乎很奇怪和错误 - 如果您从 Obj-C 类中采用 Objc-C 协议,则不必重新定义属性,只需@synthesize
声明就足够了。
我已经尝试以我能想到的所有方式定义 Swift 协议,并且能够找到有关的建议,但我无法解决这个问题。
那么,在 Objective-C 类中实现 Swift 协议属性(可能是只读属性?)以便另一个 Swift 类可以访问它的正确方法是什么?我真的必须在 Obj-C 标头中重新声明该属性吗?我知道我总是可以放弃它,只在 Objective-C 中定义协议,但是...... Swift 是未来!(或类似的东西...)
objective-c - 在 Objective-C iOS 应用程序中使用 Swift Project (Siren)
我正在尝试在 iOS Objective-C 应用程序中使用流行的 swift 库Siren。我使用 cocoapods 将库作为框架包含在内,然后运行pod init
,然后pod install
使用这样的 podfile:
我已经将 swift 代码导入到 AppDelegate.m 文件中,如下所示:
#import <Siren/Siren-Swift.h>
我现在可以访问Siren
该类,但似乎无法引用该类的shared
静态属性Siren
。我已经尝试过[Siren shared]
,Siren.shared
但都没有工作。这是Siren
该类的前几行:
是否有在 Objective-C iOS 应用程序中使用 Siren 的文档或示例?这可能吗?我知道我可以使用 Harpy,但由于它不再受支持,所以我尽量避免使用它。我研究过在 Objective-C 代码中使用 Swift,但我找不到任何与访问static let
类的属性特别相关的内容。我发现这个有用的答案,但它提到了全局变量,而不是静态类属性。
ios - 用 KVC 绕过 ObjC 到 Swift 的桥接?
最近在我们的应用程序中遇到了崩溃:
它来自 webView 决定我们访问请求属性的策略:
我相信问题出在 swift lib 中的这一行: https ://github.com/apple/swift-corelibs-foundation/blob/master/Foundation/URLRequest.swift#L298
这里没有守卫,似乎在 objc 方面,请求可能为零。
我的问题是关于如何绕过 objc 来快速桥接。KVC 会避免这种情况吗?
如果没有办法绕过 objc 来快速桥接它是我们将不得不忍受的崩溃?它不会发生得太频繁,但足以让我们愿意修复。
objective-c - 如何在swift中导入Objective c文件
您好,我正在开发 react native 项目,我使用这个如何将 iOS react native 模板转换为 swift 从目标 c 转换为 swift?线。
现在我想使用这个https://github.com/wonday/react-native-orientation-locker来集成这个库我需要导入方向类但是当我导入方向类时我收到错误
这是我的项目层次结构
所以我的问题是我们如何在 swift 项目中导入目标 c 文件,或者我们如何在桥接头文件中导入第三方库
当我以这种方式导入它时
我收到以下错误
❌错误:未能发出预编译头文件'/Users/softech/Desktop/vsts-agent-osx-x64-2.136.1/_work/r2/a/Application/ios/build/VidizmoMobileApp/Build/Intermediates.noindex/PrecompiledHeaders/ VidizmoMobileApp-Bridging-Header-swift_G3EOBN6WTSYG-clang_3DYYERZEW34TU.pch' 用于桥接头 /Users/softech/Desktop/vsts-agent-osx-x64-2.136.1/_work/r2/a/Application/ios/VidizmoMobileApp-Bridging-Header。 H
错误 无法构建 iOS 项目。我们运行了“xcodebuild”命令,但它以错误代码 65 退出。要进一步调试构建日志,请考虑使用 Xcode.app 构建您的应用程序,方法是打开 VidizmoMobileApp.xcworkspace
objective-c - 如何从objective-c类推送一个快速视图控制器并将数据传回并继续objective-c类中的下一个过程
我想从我的目标 C uiviewcontroller 推送 swift UIViewController 并等待该视图控制器发回数据。我该怎么做。
我尝试在 swift 中使用协议/委托,但它会引发错误,因为它在 objc .h 文件中不可用,即使我正在导入“Pass-swift.h”桥接头文件。
我很好奇我是否可以使用完成块,如果是,那么如何?或任何其他方法?
// .h 文件
//SecurityQuestionViewController.swift
//我应该将数据返回给 ParentViewController,它应该等待 swift 视图控制器发回数据,然后它应该转到下一个函数/方法 - singupWithSecurityQuestion。
objective-c - 为什么即使文件在桥中,我也无法访问 Objective-C 方法?
我有一个包含很多objective-c
代码的项目。现在我想在我的 swift 文件中访问该代码。objective-c
但是由于某种原因,即使我可以启动该类的对象,我也无法访问这些方法。
我有一个添加bridge-file
的所有.h
文件称为projectName-Bridge-Header.h
并且它的路径被添加到build-settings
(一个附带问题:即使没有将桥路径添加到 ,我也可以从一个类中启动一个对象build-settings
。为什么会这样?):
我可以从类中初始化一个对象,但我无法访问该方法:
最后一行给出了方法不存在的错误。
我是新手,objective-c
所以它可能非常简单。不过,这超出了我的范围。
objective-c - 在 Xcode 11.3 中读取文档中的文件失败
当我使用它读取文档中的文件stringWithContentsOfURL
时失败
这是 Xcode 控制台中的错误:
错误域 = NSCocoaErrorDomain 代码 = 256 “文件“1.txt”无法打开。” UserInfo={NSURL=/var/mobile/Containers/Data/Application/E026973D-11B6-4895-B8FE-7F9FBCC11C12/Documents/bbbb/1.txt}
这是我的代码: