Sto provando a migrare lentamente da Obj-C a Swift. Il mio primo passo è quello di migrare piccoli e semplici metodi alle estensioni di Swift, così ho deciso di provare a migrare didRegisterForRemoteNotifications
ma questo non ha funzionato perché pensa che il metodo sia implementato da qualche altra parte nel mio codice Objective-C. Non è.L'implementazione didRegisterForRemoteNotificationsWithDeviceToken in un'estensione Swift non funziona
sto usando Xcode 7.3 (7D175)
Ecco alcuni passaggi di riproduzione:
- Creare un nuovo progetto Obj-C.
- Creare un nuovo file Swift vuoto denominato
AppDelegate-Extension.swift
. Questo crea anche un file di intestazione Bridging. - Aggiungi
#import AppDelegate.h
al file di intestazione Briding. Vai alla scheda Swift vuoto e digitare:
extension AppDelegate { public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { } }
Questo fa sì che a compilatore a lamentarsi:
method 'application(_:didRegisterForRemoteNotificationsWithDeviceToken:)' with Objective-C selector 'application:didRegisterForRemoteNotificationsWithDeviceToken:' conflicts with previous declaration with the same Objective-C selector public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { ^ __ObjC.AppDelegate:38:17: note: 'application' previously declared here public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
Che cosa sto facendo di sbagliato?
EDIT: Alcuni suggerimenti che ho provato:
Add
override
to the method declaration so it readsoverride public ...
Ciò restituisce il seguente errore (in aggiunta a l'errore originale)
error: method does not override any method from its superclass override public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData)
cosa intendi con file di intestazione rapido? Dovresti creare una classe Bridge e importare il tuo 'AppDelegate.h' lì –
Scusa, questo è esattamente quello che intendevo. Ho modificato la domanda per riflettere questo. – OlivaresF
prova 'applicazione di override func (applicazione: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {' –