Objective c 将Objective C SDK添加到Swift 4.1 SDK中

Objective c 将Objective C SDK添加到Swift 4.1 SDK中,objective-c,swift,Objective C,Swift,我有一个第三方Objective-c SDK,我想将它添加到我的自定义Swift SDK中。我能够结合他们以及使用一些方法。然而,当谈到Objective-CSDK中的私有方法时,它不断地向我返回一个错误,说“使用未声明的类型”,它周围还有其他错误吗?谢谢 第三方目标-c类 @class CardReader, MeaningfulError, BluetoothDevice, DeviceEventDispatch, DeviceController; @interface CardReade

我有一个第三方Objective-c SDK,我想将它添加到我的自定义Swift SDK中。我能够结合他们以及使用一些方法。然而,当谈到Objective-CSDK中的私有方法时,它不断地向我返回一个错误,说“使用未声明的类型”,它周围还有其他错误吗?谢谢

第三方目标-c类

@class CardReader, MeaningfulError, BluetoothDevice, DeviceEventDispatch, DeviceController;
@interface CardReaderController : NSObject

@property (nonatomic, readonly, nullable) CardReader *connectedReader;
@property (nonatomic, readonly, nullable) DeviceEventDispatch *eventDispatch;


+ (instancetype _Nonnull )sharedController;

- (BOOL)isReaderConnected;
- (void)connectAudioReader;
- (void)connectBTReader:(void (^ _Nullable)(NSArray<BluetoothDevice *> *_Nullable))availableBTReadersToConnectHandler;

- (void)disconnectReader;

@end
这是蓝牙设备

#import <CoreBluetooth/CoreBluetooth.h>

@interface BluetoothDevice : CBPeripheral

@end
#导入
@接口蓝牙设备:CBP外围设备
@结束

该类包含在SDK中,但出于任何原因,swift无法找到它。

您有一个swift桥接头,其中包含用于Objective-C头文件的
\import
语句。听起来你好像忘了导入
“BluetoothDevice.h”
或任何Objective-C头文件声明的BluetoothDevice。

嗨,我已经编辑了我的问题。它是框架。确保BluetoothDevice是
@objc public
(或
@objc Open
)及其所需的方法(例如可能是
init
)。最好同时显示ObjC代码和Swift代码。感谢您的反馈,我编辑了“我的问题”以显示这两个类。不,您没有显示BluetoothDevice的声明方式或声明位置。听起来您只是忘记了在swift桥接头中导入
“BluetoothDevice.h”
。BluetoothDevice不包含在第三方库中,这就是为什么我假设它是一个私有类。我在Objective-CSDKI中没有看到BluetoothDevice,我自己正在创建一个定制SDK。所以不需要使用桥接头文件,所以我只需要确保在设置中启用了模块。我能使用所有的公共课。BluetoothDevice.h,我在第三方objective-CSDK中找不到它,我假设它是一个私有类。它不是关于“私有”,而是关于可见性。您需要导入的内容是或导入声明BluetoothDevice的文件。否则您的Swift代码不知道。我使用的是第三方sdk框架。我在第三方SDK中的任何地方都找不到BluetoothDevice的声明类,除了它被CardReaderController调用之外。当我使用Objective-c应用程序测试第三方SDK时,我可以访问BluetoothDevice,但一旦我移动到swift,swift就无法找到BluetoothDevice,在seift中,我可以访问所有其他类,因此桥接不是问题,因此,我想知道在我的swift项目设置中是否还有一些其他设置需要修改。如果你告诉我们这是什么框架,那么回答这个问题显然会容易得多,这样我们就可以自己查看了。事实上,你只是在猜测。我猜你只是运气不好:这个框架的API并没有以一种可以从Swift访问BluetoothDevice类的方式构建。您可能会要求编写框架的人对此进行调查。同时,正如您已经暗示的,您可能必须用Objective-C编写这部分代码。我不清楚我们是否解决了任何问题。看到有问题的框架真的很有帮助。。。我有一种感觉,斯威夫特过来抓住了这个框架,如果你明白我的意思的话。
#import <CoreBluetooth/CoreBluetooth.h>

@interface BluetoothDevice : CBPeripheral

@end