【问题标题】:import Swift non view controller class in obj c in swift在swift中的obj c中导入Swift非视图控制器类
【发布时间】:2018-03-28 16:55:42
【问题描述】:

我正在尝试在 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?
    .....
}

【问题讨论】:

    标签: ios objective-c swift swift3 uiviewcontroller


    【解决方案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 限定符指定各个属性/方法。

    【讨论】:

    • 非常感谢,但对于 swift3,我刚刚创建了 NSObject 的 UserDetails 子类并添加了 @ObjC 它工作正常。
    猜你喜欢
    • 2016-04-02
    • 2018-11-09
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    相关资源
    最近更新 更多