Wie man eine Swift-Struktur als Parameter an eine Objective-C-Methode übergibt

8

Ich habe eine Objective-C-Methode, die einen Parameter vom Typ id akzeptiert und ich möchte eine Swift-Struktur übergeben.

ObjcClass.m datei:

%Vor%

DemoStruct.swift datei:

%Vor%

Die Kompilierfehlermeldung bekomme ich:

  

Typ 'DemoStruct' entspricht nicht dem Protokoll 'AnyObject'

Also meine Frage wäre, wie mache ich eine Objective-C-Methode akzeptieren Any anstelle von AnyObject und gibt es so etwas?

    
Edward Ashak 17.02.2015, 17:27
quelle

2 Antworten

11

Das Beste, was ich gefunden habe, war das Umpacken in eine Box-Klasse

%Vor%     
Edward Ashak 09.03.2015, 22:35
quelle
11

Sie können es nicht tun.

Swift-Strukturen sind nicht von Objective-C aus zugänglich. Dies wird in dem Buch "Using Swift mit Kakao und Objective-C" von Apple angegeben:

  

Sie haben Zugriff auf alles innerhalb einer Klasse oder eines Protokolls, das mit dem @objc-Attribut gekennzeichnet ist, solange es mit Objective-C kompatibel ist. Dies schließt Swift-only-Funktionen wie die hier aufgeführten aus:

     
  • Generika
  •   
  • Tupel
  •   
  • Auf Swift definierte Aufzählungen
  •   
  • In Swift definierte Strukturen
  •   
  • Funktionen auf oberster Ebene, die in Swift definiert sind
  •   
  • Globale Variablen, die in Swift definiert sind
  •   
  • Typealiases, die in Swift definiert sind
  •   
  • Swift-style variadics
  •   
  • Verschachtelte Typen
  •   
  • Curry-Funktionen
  •   

Auszug aus: Apple Inc. "Verwenden von Swift mit Kakao und Objective-C." iBooks. Ссылка

    
jrturton 17.02.2015 17:30
quelle

Tags und Links