Creé una extensión para Notification.Name como se muestra a continuación:

public extension Notification.Name {
      public static let blahblahblah = Notification.Name(rawValue: "blahblahblah")

}

Ahora quiero usar esta extensión en Objective-C, pero no es accesible incluso si es pública.

¿Me puede decir cómo acceder y usar esta extensión rápida en Objective-C y Swift?

Anteriormente estaba usando valores constantes en Objective-C, pero ahora para actualizar mi código, quiero usar esta extensión.

15
BARS 18 oct. 2017 a las 23:19

2 respuestas

Mi extensión en archivo swift

extension Notification.Name {
    static let purchaseDidFinish = Notification.Name("purchaseDidFinish")
}

@objc extension NSNotification {
    public static let purchaseDidFinish = Notification.Name.purchaseDidFinish
}

// OBJECTIVE-C

#import YourProjectName-Swift.h

[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(purchaseDidFinish) name:NSNotification.purchaseDidFinish object:nil];

// SWIFT
NotificationCenter.default.addObserver(self, selector: #selector(purchaseDidFinish), name: .purchaseDidFinish, object: nil)

@objc func purchaseDidFinish(notification: Notification) {
    print("purchaseDidFinish")
}

La respuesta de @leanne fue súper útil

36
Warif Akhand Rishi 22 dic. 2018 a las 05:47

Además de las respuestas aquí, tuve que agregar @objc a mi extensión NSNotification antes de que mi código Obj-C pudiera verlo (Swift 4).

5
janineanne 30 mar. 2018 a las 19:15