ios - 在 obj c 中快速导入 Swift 非 View Controller 类

标签 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?
    .....
}

最佳答案

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

参见 Writing Swift Classes and Protocols with Objective-C Behavior 将 Swift 与 Cocoa 和 Objective-C 结合使用。


仅供引用,我知道您问过 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 限定符指定各个属性/方法即可。

关于ios - 在 obj c 中快速导入 Swift 非 View Controller 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46782693/

相关文章:

ios - UITextView 具有可点击链接或电话号码以及 Swift 中的自定义属性字符串

ios - Swift:是否可以根据正在设置的另一个属性来要求属性?

swift - ios Charts 3.0 - 将 x 标签(日期)与图表对齐

swift - 如何检查可选重载方法是否已实现?

ios - ios应用程序具有不同背景图像的自定义tableview单元格

ios - @ObservedObject 未更新

objective-c - drawAtPoint,需要说明

ios - 如何像android一样在iOS NavigationController中创建菜单?

objective-c - 将私有(private) Objective-C 方法或属性公开给子类

ios - NSURLERRORDOMAIN--1012E : (null) on Bluemix