Wenn Siesagenes bedeutet, dass Ihre ckeck
ein Optional ist, was wiederum bedeutet, dass es etwas sein kann oder es nil (nichts) sein kann.
Wenn Sie in der nächsten Zeile ckeck!
sagen, bedeutet das, dass Sie dem Compiler sagen, nur den Wert von ckeck
zu behandeln, und es ist Ihnen egal, ob es null ist oder nicht. Das ist fast immer eine schlechte Idee, da Sie gerade den Weg gefunden haben.
Ein besserer Weg ist, entweder if let
Syntax zum Auspacken oder guard
Syntax verwenden.
So könnte man sagen:
if let ckeck = ckeck {
ckeck!.CheckMarkView1.hidden = false
}
Oder man könnte sagen:
guard let ckeck = ckeck else { return }
ckeck!.CheckMarkView1.hidden = false
diese Weise können Sie sicher sind, nur mit ckeck
zu starten, wenn es tatsächlich einen Wert hat.
gesagt haben, dass die Art und Weise Sie tatsächlich ckeck
erstellen sieht ein wenig seltsam:
var ckeck = AssetCell() as? AssetCell
Jetzt weiß ich nicht die Details, konnte aber nicht sagen Sie nur
let ckeck = AssetCell()
Und endlich ... diese Frage wurde schon sehr oft in verschiedenen Formen gestellt. Ich weiß, dass es frustrierend ist, wenn Sie einen Fehler haben und Sie nicht ganz verstehen, was passiert, aber das nächste Mal sollten Sie zum Beispiel mit einer Suche nach EXC_BAD_INSTRUCTION
beginnen. Dies sollte viele Antworten zurückgeben, die Ihnen helfen, das Problem zu lösen, oder Ihnen zumindest helfen, einen Eindruck davon zu bekommen, was gerade passiert. Entschuldigung :)