Hallo, ich bin im Moment ein Projekt von Ziel C zu Swift importieren. Das objektive C-Projekt verwendet eine benutzerdefinierte Bibliothek, die in einer der Klassen eine Funktion hat, die ein Klassenobjekt annimmt, das beim Laden der Daten ein ID-Obj mit der Klasse (Code unten) initialisiert. Auf der objektiven C-Seite funktioniert das großartig! Ich benutze die gleiche Bibliothek auf Swift mit einem Bridge-Header, aber leider ist mein Objekt Null, sobald die Daten geladen sind. Ich habe überprüft, dass das Datenobjekt, das zum Initialisieren des Objekts verwendet wird, Inhalt hat. Die benutzerdefinierte Swift-Klasse erfordert auch, dass ich einen Init (Daten: Data) Initialisierer implementieren, wenn ich eine benutzerdefinierte init() hinzufügen, ich bin neu zu schnell, jede Hilfe wäre großartig! Vielen Dank!initialisieren Swift-Klasse von Objective-C-Bibliothek
Objective C:
Library:
-(id) buildRetObject:(Class)clss fromData(NSData*) data{
id obj = nil;
if (data != nil) {
obj = [[clss alloc] initWithData:data];
}
}
benutzerdefiniertes Objekt ist eine Unterklasse eines anderen benutzerdefinierten Objekts, nicht in der Bibliothek, sondern auf der Haupt App:
Item.m:
-(id)init{
if ([super init]){
//do something
}
return self
}
Gleiches Objekt in swift:
//customClass super class is abstactCustomClass which is a sub abstract class of NSObject class, init functions are in here, the abstract class
class Item: customClass {
//variables
override init() {
super.init()
// do something
}
required init!(data: Data){
//fatalError(message here)
/*tried calling supers method
super.init(data:Data) gives error: fatal error: use of unimplemented initializer 'init(dictionary:)'*/
}
//methods
}
Können Sie ein vollständigeres Beispiel veröffentlichen? Was ist die Swift-Klassendefinition? – Ssswift
@Ssswift Ich habe meinen Beitrag aktualisiert. Bitte lassen Sie mich wissen, ob das hilfreicher ist – paul590