2015-03-26 2 views
0

У нас есть проект, построенный с использованием Cordova. Однако мы пишем много кода в Swift. Из-за большого количества ошибок заголовка Xcode Bridging Header, нам нужно перезаписать наш AppDelegate.m в Swift.Преобразование объекта Objective-C AppDelegate Класс класса для быстрого класса

Все прошло отлично.

Однако для Кордовы есть плагин для push notifications.

В этом плагине мы установили еще один файл, который относится к категории типа AppDelegate.

В верхней части ее заголовок файла выглядит следующим образом:

@implementation AppDelegate (notification) 

Там нет категорий в Swift, есть расширения. Мой вопрос заключается в следующем: при преобразовании этого файла в Swift я должен просто удалить этот файл и добавить его расширение в существующий файл AppDelegate или создать класс AppDelegate + notification.swift и просто написать?

extension AppDelegate { 

//code 

} 

В целом, я немного смущен, почему будет отдельный файл, который добавит функциональность AppDelegate. Почему бы им просто не «расширить» его в первую очередь, и теперь я не уверен, как преобразовать этот файл AppDelegate + notification.m в Swift.

UPDATE

Я удалил файл main.m, в AppDelegate.m/.h, а + notification.m/.h файл AppDelegate и превращали их в соответствующие файлы Swift AppDelegate в новый AppDelegate.swift, и он сработал.

+0

Я нашел этот пост, потому что я пытаюсь выяснить, как именно преобразовать Objective Кордовы -C AppDelegate файл для Swift. Не могли бы вы рассказать о том, как вы это делали? – jcaruso

+0

Просто перепишите методы objc из любых классов делегатов, которые у вас есть как быстрые классы. Они использовали Swizzling, потому что хотели расширить делегат приложения. Вам не нужно использовать это, потому что вы просто поместите все это в свой AppDelegate.swift. Поэтому просто конвертируйте методы в делегатах приложения в один AppDelegate.swift – Aggressor

ответ

1

Расширение в swift аналогично категории в Objective-c. Вы можете добавить дополнительные методы, настроенные init ... в расширение.

Чтобы добавить расширение в AppDelegate, нам не нужно создавать AppDelegate + notification.swift, но вы добавляете раздел расширения AppDelegate в файл AppDelegate.swift. Обратите внимание, что расширение не имеет названия как Категория в Objective-C. Но, конечно, вы можете создать кратное расширение 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") 
    } 

} 
Смежные вопросы