Xcode试图将Objective-C库编译为Swift。

5
我在Xcode上有一个iOS Swift项目。我已经使用外部的Objective-C库在我的Swift代码中工作了很长一段时间,没有任何问题。突然间,在Xcode更新后(我猜是这个原因),我尝试运行我的项目,但显然它试图将外部的Objective-C编译为Swift,所以当然会失败。我附上了一个带有错误信息的截图。这是我的桥接头文件:
#define degreesToRadian(x) (M_PI * (x) / 180.0)
#import <Parse/Parse.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import <FBSDKLoginKit/FBSDKLoginKit.h>
#import <Bolts/Bolts.h>
//#import <Facebook-iOS-SDK/FacebookSDK/FacebookSDK.h>
#import <ParseFacebookUtils/PFFacebookUtils.h>
#import <Bugsnag.h>
#import <M13Checkbox.h>

#ifndef VideoCloudBasicPlayer_VideoCloudBasicPlayer_Bridging_Header_h
#define VideoCloudBasicPlayer_VideoCloudBasicPlayer_Bridging_Header_h

#import "BCOVPlayerSDK.h"

#endif

有什么想法吗?

我遇到了类似(但不同的;-)问题,并通过清除库中的派生数据来解决它们。 - qwerty_so
谢谢@ThomasKilian,我该怎么做? - Sergio Daniel L. García
@ThomasKilian 我已经做了,但是没有起作用 :( - Sergio Daniel L. García
你的桥接头文件是否符合此处指定的格式:https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html? - Garret
2个回答

1

嗯...我之前也遇到了相同的问题。

在尝试清理和移除派生数据后,我通过删除旧的Objective-C库并重新添加它们到我的项目中来解决了这个问题。可能有一个在目标设置中告诉ARC读取Objective-C的选项,但是我从未找到它。

我的Objective-C库不知怎么地失去了其目标成员身份,并认为它是Swift语言。

提交你的更改。保存你的桥接头文件并移除库,然后重新添加库,选择File - New - Target -(确保Obj-C被设置为语言),然后将你的类文件添加到目录中。它应该能够编译...


当你说“添加你的类文件”时,你是什么意思?你的意思是我应该创建一个独立的Cocoa Touch静态库作为目标,并将pods与非pods库一起放在那里吗? - Sergio Daniel L. García
哦,我不知道你使用cocoapods来导入/管理你的库。我不熟悉cocoapods。我尽量避免在xcode中使用第三方管理器。我导入库的方式是将.h和.m文件(类文件)拖放到我的新建目标中。 - Garret
我猜这与经典的拖放方法并没有太大的区别。实际上,我也是以这种方式导入了几个库。所以,我应该将 Cocoa Touch 静态库作为项目的新目标,并将我的外部库放在那里? - Sergio Daniel L. García
值得一试,因为这是我的 Objective-C 库成功编译的方法。提交你的文件并尝试一下。如果不行,就撤销更改。我之前花了很多时间寻找切换到 Objective-C 的设置,但没有找到,所以我重新加载了库。 - Garret
我希望我能向苹果公司收费,因为我花了很多时间在他们的Xcode更新后修复我的代码。我知道他们负担得起。 - Garret
Garret。目标应该是“Cocoa Touch Framework”还是“Cocoa Touch Static Library”?因为静态库没有语言选择,正如您之前所述。 - Sergio Daniel L. García

1

之前它无法工作是因为我使用Parse作为我的第一个Cocoapod依赖项。所以我从Podfile中将其删除,通过拖放样式安装了它。

然后,在这之后,我处理Cocoapods依赖项问题的最终解决方案是删除所有内容(除了Parse),将Cocoapods更新到最新版本,重新安装所有内容(在Xcode关闭时)。

附注: 以上解决方案在使用拖放安装的库时完美运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接