繁体   English   中英

将Objective-C AppDelegate类别类转换为Swift类

[英]Converting An Objective-C AppDelegate Category Class To A Swift Class

我们有一个由Cordova构建的项目。 但是,我们在Swift中编写了大量代码。 由于许多Xcode Bridging Header错误太久而无法进入,因此我们需要将AppDelegate.m重新写入Swift。

一切都很好。

但是,Cordova有一个用于推送通知的插件。

这个插件让我们安装了另一个文件,该文件是AppDelegate类型的Category。

其头文件的顶部如下:

@implementation AppDelegate (notification)

Swift中没有类别,有扩展。 我的问题是:将文件转换为Swift时,应该删除该文件,并将其扩展名添加到现有的AppDelegate文件中,还是创建一个AppDelegate + notification.swift类并编写?

extension AppDelegate {

//code

}

基本上,我有点困惑为什么会有一个单独的文件为AppDelegate添加功能。 他们为什么不首先只是“扩展”它,现在我不确定如何将该AppDelegate + notification.m文件转换为Swift。

UPDATE

我删除了main.m文件,AppDelegate.m / .h和AppDelegate + notification.m / .h文件,并将它们转换为新AppDelegate.swift文件中的相应Swift AppDelegate文件,并且可以正常工作。

快速扩展类似于Objective-c中的类别。 您可以向扩展添加更多方法,自定义init...。

要向AppDelegate添加扩展名,我们不必创建AppDelegate + notification.swift,而是在AppDelegate.swift文件中添加扩展名AppDelegate部分。 请注意,扩展名在Objective-C中没有命名为Category。 但是当然,您可以创建AppDelegate的倍数扩展,给它一个// MARK:来区分

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Extensions.html

//MARK: extension Hello
extension AppDelegate {
    func sayHello() {
       NSLog("hello")
    }

}

//MARK: extension goodbye
extension AppDelegate {
    func sayGoodbye() {
        NSLog("goodbye")
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM