Objective c 目标C中的swift类:未知接收者
我在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代码中:
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) {
...
}
}