ios – 如何使用从swift 3到Objective-C的Notification.Name扩展

ios – 如何使用从swift 3到Objective-C的Notification.Name扩展,第1张

概述我为Notification.Name创建了一个扩展,如下所示: public extension Notification.Name { public static let blahblahblah = Notification.Name(rawValue: "blahblahblah") } 现在我想在Objective-C中使用这个扩展,但即使它是公共的也无法访问. 你能告诉我如 我为Notification.name创建了一个扩展,如下所示:
public extension Notification.name {      public static let blahblahblah = Notification.name(rawValue: "blahblahblah")

}

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

你能告诉我如何在Objective-C和Swift中访问和使用这个swift扩展吗?

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

解决方法 Objective-C中不存在Notification.name.而Objective-C类型Notificationname实际上只是一个Nsstring.要在Objective-C中使用Swift,该类必须在两者中都可用,并且不能是Swift结构(比如Notification或String).

要做你想做的事,那么你需要有两个扩展:

>一个用于Swift Notification.name,就像你一样;和,
>一个用于Objective-C对象(例如,Nsstring,或者如果您愿意,可能是NSNotification).

1)向Swift文件添加与Objective-C兼容的对象扩展:

public extension NSNotification {    public static let blahblahblah: Nsstring = "blahblahblah"}

注意:在Swift 4中,properties must be computed用于Objective-C兼容性.那看起来像是:

public extension NSNotification {    public static var blahblahblah: Nsstring {        return "blahblahblah"    }}

注意计算属性中的var:计算属性不能是不可变的,所以不能使用let.

2)在Objective-C文件中,导入Xcode生成的Swift头文件(在任何其他导入之下):

#import "YourProjectname-Swift.h"

注意:将YourProjectname替换为项目的实际名称.因此,如果您的项目名为“CoolGameApp”,则Swift标题为“CoolGameApp-Swift.h”.如果您的项目名称有空格,例如“酷游戏应用程序”,请用破折号替换它们:“Cool-Game-App-Swift.h”

3)重建项目.

现在,您应该能够访问Objective-C中的扩展:

[[NSNotificationCenter defaultCenter] postNotificationname:NSNotification.blahblahblah object:self];
总结

以上是内存溢出为你收集整理的ios – 如何使用从swift 3到Objective-C的Notification.Name扩展全部内容,希望文章能够帮你解决ios – 如何使用从swift 3到Objective-C的Notification.Name扩展所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1109193.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存