将Swift类导入Obj-C时:在类型的对象上找不到属性

时间:2019-06-28 19:34:43

标签: ios objective-c swift

我正在创建一个通过蓝牙与外围设备通信的iOS应用。蓝牙设备的API用Objective-C编写,因此我选择编写AppDelegate,而ViewController也用Objective-C编写。我还开发了CoreML算法,并选择与Swift中的模型进行交互(XCode为我自动生成了一个名为Model的Swift类)。从那里,我创建了另一个名为Predictor的Swift类,该类具有名为predict的方法,该方法返回Model.中包含的ML算法的结果。但是,当我导入{{1 }}是我的Objective-C视图控制器的Swift类,XCode似乎无法访问其Predictor方法。

我是Objective-C和Swift的新手,但我认为我对类结构有具体的了解。我已经尝试了很多事情,至此,我只是在猜测。我必须对Swift / Objective-C有一个基本的误解,但我无法识别它。

我在Swift中的Predictor类暴露给Objective-C,并且继承自NSObject,但是没有init()函数(我认为没有必要这样做)。

predict

ViewController.h

@objcMembers class Predictor: NSObject {

    let model = Model();

    @objc func predict(data: [Double]) -> Int64 {
        isPreictal = model.prediction(input: data)
        return isPreictal.classLabel
    }
}

ViewController.m

@class Predictor;
@interface ViewController : UIViewController
< IXNMuseConnectionListener, IXNMuseDataListener, IXNMuseListener, IXNLogListener>
- (IBAction)compute:(id)sender;
- (Predictor *)returnSwiftObject;
- (void)applicationWillResignActive;
@end

看到我的Swift类#import "ViewController.h" #import "SeizureSense-Swift.h" @interface SimpleController () <CBCentralManagerDelegate> @property (nonatomic, strong) Predictor * myModel; double modelInputs[30]; - (void)viewDidLoad { _myModel = [Predictor new]; } - (IBAction)compute:(id)sender { [self log:@"%d", _myModel.predict(data: modelInputs)]; } @end 导入了ViewController.h,SeizureSense-Swift标头也导入了ViewController.m,我希望我可以在{{ 1}}类实例Predictor,但返回以下错误消息:predict

1 个答案:

答案 0 :(得分:1)

_myModel.predict(data: modelInputs)无法正常工作。您正在尝试在Objective-C中使用Swift语法。

在Objective-C中,调用方法的语法不同。实际上,甚至方法名称也不同。您的通话应该类似于:

[self log:@"%d", [_myModel predictWithData:modelInputs]];