2017-10-17 62 views
0

我想在ObjC中導入Swift 3類,但是由於某些原因,我無法做到這一點。該類不是UIViewController類,我發現的解決方案完全適用於View Controller類,但不適用於Model類。誰能幫忙?在swift中導入Swift非視圖控制器類

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

對於夫特類是在Objective-C可見,它必須是一個NSObject子類。此外,這些類型必須與Objective-C兼容(例如,不能在Objective-C中表示可選的數字類型,如Int64?)。它必須是非可選的或使其成爲NSNumber

請參閱Writing Swift Classes and Protocols with Objective-C Behavior in 在可可和Objective-C中使用Swift。


僅供參考,我知道你問斯威夫特3,但如果寫斯威夫特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限定符指定各個屬性/方法即可。

+0

非常感謝,但對於swift3,當我只是做了NSObject的UserDetails子類並添加了@ObjC它的工作。 –

相關問題