2017-10-17 19 views
0

J'essaie d'importer une classe Swift 3 dans ObjC mais je ne suis pas capable de le faire pour certaines raisons. La classe n'est pas une classe UIViewController et les solutions que j'ai trouvées fonctionnent parfaitement pour les classes View Controller mais pas pour la classe Model. Quelqu'un peut-il aider?import Swift non view classe de contrôleur dans obj c dans 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? 
    ..... 
} 

Répondre

1

Pour une classe Swift soit visible dans Objective-C, il doit être une sous-classe NSObject. En outre, les types doivent être compatibles Objective-C (par exemple, les types numériques facultatifs tels que Int64? ne peuvent pas être représentés dans Objective-C). Il doit être non-facultatif ou en faire un NSNumber. Voir Writing Swift Classes and Protocols with Objective-C Behavior dans en utilisant Swift avec du cacao et Objective-C.


Pour votre information, je sais que vous avez parlé Swift 3, mais si l'écriture Swift 4, assurez-vous d'utiliser @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? 
    ... 
} 

Ou si seulement certains d'entre eux doivent être disponibles à partir Objective C, il suffit de désigner les propriétés/méthodes individuelles avec le qualificatif @objc.

+0

Merci beaucoup, mais pour swift3 quand j'ai juste fait la sous-classe UserDetails de NSObject et ajouté @ObjC cela a fonctionné. –