Ich versuche, meine iMessage App auf Swift 4 zu aktualisieren. Dieser Abschnitt des Beispielcodes funktionierte perfekt in Swift 3, gibt aber Fehler beim Versuch, zu Swift 4 zu verschieben. Der folgende Code ist in a Klasse, in der die Datei Teil des Hauptziels der App sowie der iMessage App ist.Swift 4 Fehler Running Code in Extension
#if IN_EXTENSION
// Do nothing since it's running in iMessage Extension
print("In extension")
#else
let helper = Helper()
helper.test()
UIApplication.shared.shortcutItems = []
let mainStoryboard = UIStoryboard(name: "Main", bundle: Bundle.main)
let testViewController : UIViewController = mainStoryboard.instantiateViewController(withIdentifier: "Test") as UIViewController
UIApplication.shared.keyWindow?.rootViewController = testViewController
#endif
Es gibt Fehler wie shared is unavailable
. Das macht Sinn, da es in iMessage Apps nicht verfügbar ist.
Wie dies zuvor funktioniert hat, ist in Other Swift Flags
Ich habe -DIN_EXTENSION
zu der iMessage App-Erweiterung hinzugefügt, aber nicht die Haupt-App.
Es gibt viele Ähnlichkeiten zwischen meiner iMessage App und der Haupt-App. Also möchte ich meinen Code sauber halten und Code nicht wiederholen. Das sollte also möglich sein.
Ich bin mir nicht sicher, warum nach der Konvertierung zu Swift 4 plötzlich Fehler wirft.
Irgendwelche Ideen zur Behebung?
Offensichtlich taucht es in die '# else' auch in iMessage .. – matt
@matt Nur das herausgefunden. Aus irgendeinem Grund gab es bei der Wiederherstellung plötzlich völlig andere Fehler. Nach dem Reparieren ist dieser Fehler vollständig verschwunden. Scheint wie ein Fehler mit Xcode oder etwas. –
Sehr möglich! Irreführende Fehler treten auf, wenn andere Fehler auftreten. Ich bin froh, dass du es sortiert hast. – matt