Ich habe eine gemischte Obj-C - Swift App.
Meine benutzerdefinierte Obj-C MapViewController
hat die folgende Headerdatei, wo Item
eine benutzerdefinierte Klasse in Swift geschrieben ist:Swift: "Wert des Typs 'Artikel!' Kann nicht zugewiesen werden. "Item!"
@class Item;
@interface MapViewController : UIViewController
@property (nonatomic, strong) Item *item;
@end
Die Segue zum MapViewController
mit einem Item
Objekt initiiert wird item
self.performSegueWithIdentifier(kMapSegueId, sender: item)
mit
Dies ruft, wo item
gesendet wird als sender
:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == kMapSegueId {
let mapViewController = segue.destinationViewController as! MapViewController
mapViewController.item = sender as! Item! // This gives the error
}
}
jedoch die Zuordnung zum Objekt item
der MapViewController
gibt dem Compiler-Fehler
Wert kann nicht vom Typ zuzuweisen ‚Item!‘ "Item!"
Wie kann ich diesen seltsamen Fehler vermeiden?
Das 'as!' Entpackt bereits das optionale, das Ausrufezeichen nach 'Item' ist bedeutungslos und höchstwahrscheinlich das Problem. – vadian
@vadian: Ich habe das schon mal probiert, aber ohne das Ausrufezeichen hinter Item, bekomme ich den Fehler "Kann keinen Wert vom Typ 'Item' zuweisen um 'Item!'" –
Hat 'Item'' 'objc' Attribut? –