Ios 对于';没有可见的@界面;xxx和x27;声明选择器';初始化:';

Ios 对于';没有可见的@界面;xxx和x27;声明选择器';初始化:';,ios,objective-c,swift,xcode,Ios,Objective C,Swift,Xcode,我有一个objective-c类,它尝试使用以下方法初始化Swift类对象: - (id) init : (ObjCTestClass*) testclass { NSLog( @"Creating" ); self = [super init]; if ( !self ) { return nil; } self.testclass = testclass; self.swiftClass = [[SwiftClass

我有一个objective-c类,它尝试使用以下方法初始化Swift类对象:

- (id) init : (ObjCTestClass*) testclass
{
    NSLog( @"Creating" );

    self = [super init];
    if ( !self )
    {
        return nil;
    }
    self.testclass = testclass;
    self.swiftClass = [[SwiftClass alloc] init: self.testclass];
    return self;
}
以下是相应的Swift等级:

final class SwiftClass: NSObject {

    private var objcTestClass: ObjCTestClass

    init(testclass:ObjCTestClass) {
        provider = CXProvider(configuration: type(of: self).providerConfiguration)
        objcTestClass = testclass
        super.init()
    }
}
我得到以下错误:

“xxx”没有可见的@interface声明选择器“init:”

注意: ObjCTestClass是一个objective-c类。 我有桥接头向Swift公开objective-c,反之亦然


如何解决此问题?

我通过在init之后显式设置属性解决了上述问题:

final class SwiftClass: NSObject {

    **public var objcTestClass: ObjCTestClass!**

    init() {
        provider = CXProvider(configuration: type(of: self).providerConfiguration)
        super.init()
    }
}


- (id) init : (ObjCTestClass*) testclass
{
    NSLog( @"Creating" );

    self = [super init];
    if ( !self )
    {
        return nil;
    }
    self.testclass = testclass;
    **self.swiftClass = [[SwiftClass alloc] init];
    self.swiftClass.objcTestClass = self.testclass;**
    return self;
}

它应该是[[SwiftClass alloc]initWithTestClass:self.testclass]。如果设置正确,则在键入时应自动完成此操作

是否需要
[[SwiftClass alloc]initWith:self.testclass]?swift类定义:init(testclass:ObjCTestClass){我不确定initWith来自何处。我尝试了,但没有成功。谢谢。我说错了,应该是
[[SwiftClass alloc]initWithTestClass:self.testclass]
。如果设置正确,当您键入时,这应该会自动完成。@PEEJWEEJ您的建议有效。我查看了-Swift.h以了解发生了什么。请将您的建议作为答案发布,我将接受。