2016-05-12 13 views
1

Bilde Bild-Bibliothek, die mich abel zu wählen mehrere Bild aus der Sammlung Sicht, die ich gemacht habe Wenn ich Spaß mein Code Averting ist gut, aber wenn ich Presse Auswahltaste passieren diese Fehler "EXC_BAD_INSTRUCTION (code = EXC_1386_INVOP, Subcode = 0x0)"Wie man EXC_BAD_INSTRUCTION (Code = EXC_1386_INVOP, Subcode = 0x0) in swift

dies ist die Select-Taste Code

@IBAction func Select(sender: AnyObject) { 
    var ckeck = AssetCell() as? AssetCell 
    ckeck!.CheckMarkView1.hidden = false // here it shows an error which is "Thread 1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)" 
             } 

i Assetcell Klasse hatte die CheckMarkView1 enthalten

Antwort

1

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 :)

Verwandte Themen