Objective c 目标C中的swift类:未知接收者

Objective c 目标C中的swift类:未知接收者,objective-c,swift,Objective C,Swift,我在swift文件中编写了一个类: class UtilityMethods { class func userId() -> Integer { ... } class func setUserId(userId : Int) { ... } } 我正在导入-swift.h-header,它编译得很好,但我无法使用 [UtilityMethods userId]; 在我的Objective-C代码中:

我在swift文件中编写了一个类:

class UtilityMethods {
    class func userId() -> Integer {        
        ...
    }

    class func setUserId(userId : Int) {
        ...
    }
}
我正在导入-swift.h-header,它编译得很好,但我无法使用

[UtilityMethods userId];
在我的Objective-C代码中:

未知接收器“实用方法”;你是说“使用方法”吗?

UtilMethods
是我想取代的Objective-C类。我错过什么了吗

编辑 在Lance的帮助下,该类现在已被识别,但getter方法没有被识别。不幸的是,头文件如下所示:

SWIFT_CLASS("_TtC15...14UtilityMethods")
@interface UtilityMethods : NSObject
+ (void)setUserId:(NSInteger)userId;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

为什么缺少getter?

为了让目标C可以使用Swift类,您有两个选择:

选项1:子类NSObject(或其他一些Objective C类)

选项2:将
@objc
属性添加到类中,告诉Swift编译器生成一个使用动态分派而不是静态分派的方法调用的目标C对象

@objc class UtilityMethods {
    class func userId() -> Int {
        ...
    }

    class func setUserId(userId: Int) {
        ...
    }
}

在我的例子中,我正确地执行了@objc,但是在从旧的Objective-C.h文件更改为新的swift文件时,我意外地丢失了新文件的目标成员身份,因此它没有包含在生成中。

class func userId()->Integer应该是Int,而不是Integer?
@objc class UtilityMethods {
    class func userId() -> Int {
        ...
    }

    class func setUserId(userId: Int) {
        ...
    }
}