在swift中导入obj c中的Swift非视图控制器类

时间:2017-10-17 04:51:28

标签: ios objective-c swift swift3 uiviewcontroller

我正在尝试在ObjC中导入Swift 3类但由于某些原因我无法执行此操作。该类不是UIViewController类,我发现的解决方案完全适用于View Controller类,但不适用于Model类。有人可以帮忙吗?

open class UserDetails: JSONEncodable {
    public var id: Int64?
    public var usertoken: String?
    public var firstName: String?
    public var lastName: String?
    public var email: String?
    .....
}

1 个答案:

答案 0 :(得分:1)

要使Swift类在Objective-C中可见,它必须是NSObject子类。此外,类型必须与Objective-C兼容(例如Int64?之类的可选数字类型无法在Objective-C中表示。它必须是非可选的或使其成为NSNumber

请参阅使用Swift与Cocoa和Objective-C中的Writing Swift Classes and Protocols with Objective-C Behavior

仅供参考,我知道您询问过Swift 3,但如果编写Swift 4,请务必使用@objcMembers

@objcMembers
open class UserDetails: NSObject, JSONEncodable {
    public var id: Int64 = 0
    public var usertoken: String?
    public var firstName: String?
    public var lastName: String?
    public var email: String?
    ...
}

或者如果只需要从Objective-C中获得其中一些,只需使用@objc限定符指定各个属性/方法。