Ho ricevuto l'errore seguente quando ho provato a trasmettere lo dequeueReusableCell
a MenuCollectionViewCell
per il quale ho creato un file e ho modificato la cella nello storyboard in quella classe. Sto seguendo questo tutorial da raywenderlich. Ho controllato il codice con l'esempio e non ho trovato l'errore. Quali sono gli errori più comuni che causano questo errore?Raccolta personalizzata Swift Casting ViewCell non riuscita quando dequeueReusableCell
Se cambio il cast a as UICollectionViewCell
, l'errore scompare.
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as MenuCollectionViewCell
cell.backgroundColor = UIColor.lightGrayColor()
return cell
}
Errore:
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)
Aggiornamento: Se provato a controllare il tipo di cella con il codice qui sotto e ottenuto falsa anche se ho impostarlo MenuCollectionViewCell
nello storyboard.
print(cell is MenuCollectionViewCell) => false
È incredibile che il codice boilerplate possa causare così tanto angoscia, ma solo più di un'ora cercando di risolvere il problema !!! Grazie. – kakubei
Anche questo mi ha lasciato perplesso. Non aveva senso che fosse necessario registrare la classe della cella se il 'UICollectionViewController' aveva la cella definita nello storyboard, ma, poiché la linea era presente dal template boilerplate, non l'ho rimossa all'inizio. –