Ich habe eine Objective-C-Methode, die einen Parameter vom Typ id
akzeptiert und ich möchte eine Swift-Struktur übergeben.
ObjcClass.m
datei:
DemoStruct.swift
datei:
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?
Das Beste, was ich gefunden habe, war das Umpacken in eine Box-Klasse
%Vor%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. Ссылка
Tags und Links objective-c swift struct