Ich habe eine Klasse MyClass
von NSObject
Unterklasse abgeleitet. Es ist in Objective-C geschrieben. Es verfügt über eine Eigenschaft mit benutzerdefinierten Getter und Setter:Einstellung der Objective-C-Klasse von Swift
@interface MyClass : NSObject
@property (getter = getIsBypassEnabled, setter = setIsBypassEnabled:) BOOL isBypassEnabled;
@end
Und diese beiden Funktionen definiert sind in Umsetzung:
@implementation MyClass
// Initializer and other stuff
// ...
- (void) setIsBypassEnabled: (BOOL) newValue
{
_value = newValue;
}
- (BOOL) getIsBypassEnabled
{
return _value;
}
@end
Aber wenn ich versuche, die Eigenschaft von Swift zu setzen wie:
let objcClass = MyClass()
objcClass.isBypassEnabled = true
Ich bekomme einen Fehler 'isBypassEnabled' has been renamed to 'getIsBypassEnabled'
. Aber ich muss den Wert einstellen, nicht bekommen!
Versuch
objcClass.setIsBypassEnabled(true)
gibt mir einen Fehler, der meine Klasse kein solches Mitglied hat.
Deklarieren
- (BOOL) getIsBypassEnabled;
- (void) setIsBypassEnabled: (BOOL) newValue;
explizit in .h-Datei helfen entweder nicht.
Wie behebe ich das Problem? Vielen Dank.
Die tatsächliche Situation macht überhaupt keinen Sinn, weil sie Eigenschaft und Getter, die nur den gleichen Namen standardmäßig hat, nicht übereinstimmt. Kein Problem, wird repariert, man muss den Code mit der nächsten Version von Swift wieder ändern ... –