Es scheint, dass Swift einen Typedef in einem Objective-C-Header nicht erkennt, da der folgende Fehler auftritt:
Es wurde keine benutzerdefinierte Konvertierung vom Typ 'MMDrawerControllerDrawerVisualStateBlock!' gefunden. (MMDrawerController !, MMDrawerSide, CGFloat) - & gt; Void '
Ich benutze den MMDrawerController , der in Objective-C geschrieben ist, mein eigener Code ist jedoch in Swift.
Das Typedef sieht so aus:
%Vor%Hier finden Sie weitere Code-Snippets zur besseren Übersicht:
AppDelegate.swift
%Vor%MMDrawerController.h
%Vor%MMDrawerVisualState.h
%Vor%Modul-Bridging-Header.h
%Vor% Wenn ich dies erstelle, erhalte ich einen Fehler in meinem AppDelegate für den Ausdruck mit setDrawerVisualStateBlock
, obwohl es in MMDrawerController.h
ein typedef gibt:
Ist das ein Fehler (weil es auf Objective-C gut funktioniert)? Oder kennt jemand eine Idee, wie man damit umgehen soll? Hilfe wird sehr geschätzt, danke!
Der Grund ist, dass Sie auf MMDrawerSide drawerSide
zugreifen, aber wahrscheinlich nicht die Datei importieren, die MMDrawerSide
in Ihrem Bridging-Header deklariert.
Wenn eine Objective-C-Methodendeklaration auf eine Klasse zugreift, die nicht in Ihren Bridging-Header importiert wird, importiert Swift diese Methode nicht und erkennt sie auch nicht.
Also, wenn Sie einen Typdef in Objective-C wie folgt haben:
typedef void (^someBlock)(MMSomeClass *someInstance);
Dann müssen Sie sicherstellen, dass MMSomeClass
in Ihren Bridging-Header importiert wurde.
Tags und Links objective-c ios swift typedef mmdrawercontroller