2015-02-04 41 views
6

dequeueReusableCellMenuCollectionViewCell için bir dosya oluşturduğum ve bu sınıf için hücreyi değiştirdikten sonra bu sınıf için değiştirdiğimde hata aldım. Bunu raywenderlich'ten takip ediyorum tutorial. Kodu örnekle kontrol ettim ve hatayı bulamadım. Bu hataya neden olan yaygın hatalar nelerdir?Swift Custom CollectionViewCell Döküm dequeueReusableCell ne zaman başarısız oldu

Dökümyü tekrar as UICollectionViewCell olarak değiştirirseniz, hata kaybolur.

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as MenuCollectionViewCell 


     cell.backgroundColor = UIColor.lightGrayColor() 


     return cell 
    } 

Hata:

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) 

Güncelleme: aşağıdaki kodu ile hücre tipini kontrol denedim ve Film şeridinde MenuCollectionViewCell ayarlayın halde yanlış bildirmektir.

print(cell is MenuCollectionViewCell) => false 

Storyboard cell setting

cevap

23

sorun UICollectionViewController şablonuyla geldi viewDidLoad() yönteminde aşağıdaki kod oldu. Onu kaldırdım ve her şey beklendiği gibi çalıştı.

self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 
+5

Boilerplate kodunun çok fazla kalp durmasına neden olacağı inanılmaz, bu sorunu gidermek için bir saatten fazla boşa harcanan !!! Teşekkürler. – kakubei

+0

Bu da beni bir süreliğine şaşırttı. Eğer 'UICollectionViewController', storyboardda hücre tanımlanmışsa hücre sınıfını kaydetmeniz gerekebileceğini anlamamıştı, ancak, çizgi şablon boilerplate'de olduğundan, ilk önce onu kaldırmadım. –

İlgili konular