Ich habe den Fehler unten bei dem Versuch, die dequeueReusableCell
zu MenuCollectionViewCell
zu werfen, die ich für eine Datei erstellt und die Zelle im Storyboard zu dieser Klasse geändert haben. Ich folge diesem tutorial von raywendlich. Ich habe den Code mit dem Beispiel überprüft und konnte den Fehler nicht finden. Was sind häufige Fehler, die diesen Fehler verursachen?Swift Custom CollectionViewCell Casting ist fehlgeschlagen, wenn dequeueReusableCell
Wenn ich das Casting wieder auf as UICollectionViewCell
ändern, dann verschwindet der Fehler.
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as MenuCollectionViewCell
cell.backgroundColor = UIColor.lightGrayColor()
return cell
}
Fehler:
libswiftCore.dylib`swift_dynamicCastClassUnconditional:
0x10bd39860: pushq %rbp
0x10bd39861: movq %rsp, %rbp
0x10bd39864: testq %rdi, %rdi
0x10bd39867: je 0x10bd3989e ; swift_dynamicCastClassUnconditional + 62
0x10bd39869: movabsq $-0x7fffffffffffffff, %rax
0x10bd39873: testq %rax, %rdi
0x10bd39876: jne 0x10bd3989e ; swift_dynamicCastClassUnconditional + 62
0x10bd39878: leaq 0xb52e9(%rip), %rax
0x10bd3987f: movq (%rax), %rax
0x10bd39882: andq (%rdi), %rax
0x10bd39885: nopw %cs:(%rax,%rax)
0x10bd39890: cmpq %rsi, %rax
0x10bd39893: je 0x10bd398ad ; swift_dynamicCastClassUnconditional + 77
0x10bd39895: movq 0x8(%rax), %rax
0x10bd39899: testq %rax, %rax
0x10bd3989c: jne 0x10bd39890 ; swift_dynamicCastClassUnconditional + 48
0x10bd3989e: leaq 0x36b7d(%rip), %rax ; "Swift dynamic cast failed"
0x10bd398a5: movq %rax, 0xb4c0c(%rip) ; gCRAnnotations + 8
0x10bd398ac: int3
0x10bd398ad: movq %rdi, %rax
0x10bd398b0: popq %rbp
0x10bd398b1: retq
0x10bd398b2: nopw %cs:(%rax,%rax)
Update: Wenn versucht, den Zellentyp mit dem Code überprüft unten und bekam falsch, obwohl ich es MenuCollectionViewCell
im Storyboard festgelegt haben.
print(cell is MenuCollectionViewCell) => false
Es ist unglaublich, dass Boilerplate-Code so viel Herzschmerz verursachen würde, nur verschwendet mehr als eine Stunde zu versuchen, dies zu beheben !!! Vielen Dank. – kakubei
Das verwirrte mich auch eine Weile. Es machte keinen Sinn, dass Sie die Zellenklasse registrieren müssten, wenn die Zelle im 'UICollectionViewController' im Storyboard definiert war, aber da die Zeile von der Vorlage stammte, habe ich sie nicht zuerst entfernt. –