ios - 如何使用从 Swift 到 Objective-C 的 Notification.Name 扩展?

标签 ios swift3 notifications extension-methods nsnotifications

我为 Notification.Name 创建了一个扩展,如下所示:

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

现在我想在 Objective-C 中使用这个扩展,但即使它是公开的也无法访问。

如何在 Objective-C 和 Swift 中访问和使用这个 Swift 扩展?

以前我在 Objective-C 中使用常量值,但现在我正在升级我的代码并想使用这个扩展。

最佳答案

我在 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")
}

@leanne 的回答非常有帮助

关于ios - 如何使用从 Swift 到 Objective-C 的 Notification.Name 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46818582/

相关文章:

ios - iphone 应用程序中的主题

ios - 应用内购买实现

objective-c - 是否可以触发从 html 页面到 iphone 应用程序的功能?

Android 禁用通知声音

Android - 如何将通知设置为将来的特定日期?

android - 通知中的 IllegalArgumentException

ios - 在表格单元格中显示自定义分隔符 UIView

ios - 为现有实体创建新的 CoreData 属性时 Swift 崩溃

ios - 没有得到 FBSDKtoken

ios - 通过一个容器 View 传递多个 View Controller - Xcode 8,Swift 3