CustomCell为空或导致SIGABRT错误

我正在尝试创build一个video播放器,在UITableView中显示video的缩略图,标题和说明。 当用户点击原始的时候,它将打开一个新的视图与WebViewvideo将播放。

在目前我仍然试图设置自定义单元格。 我在AppDelegate.swift class AppDelegate: UIResponder, UIApplicationDelegate {AppDelegate.swift文件上得到一个错误class AppDelegate: UIResponder, UIApplicationDelegate { line和错误是: Thread 1: signal SIGABRT 。 错误日志是在这篇文章的末尾。

Main.storyboard我添加了一个TableView(我连接到具有delegatedataSource的ViewController)与一个原型单元格,其中我添加了一个ImageView和两个标签。 我也创build了一个名为CustomTableViewCell.swift的Swift文件。 我将View Controller自定义类设置为ViewController,将单元格的标识符设置为customCell ,将样式设置为“Custom”,并将其设置为CustomTableViewCell的类。

ViewController.swift我创build了一个包含video信息的数组,并设置了表函数。

我也试过其他的方式来编写我在堆栈中find的解决scheme的代码,但是我也得到相同的错误,或者在最大的情况下,我得到一个3个空单元格的表。 代码在下面。 有人可以请告诉如何把这个自定义细胞工作吗?

提前致谢!

Main.storyboard 用不同的代码清空单元格

 ViewController.swift // // ViewController.swift // Cycloid // // Created by smbss on 10/11/15. // Copyright © 2015 smbss. All rights reserved. // import UIKit var videos = [Dictionary<String,String>()] class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() if videos.count == 1 { videos.removeAtIndex(0) // Check if places != to 1 and not 0 because we created the dictionary places as a global var outside the ViewController and that can not be empty. } videos.append(["title":"Video 1","description":"Description 1","thumbnail":"http://img.youtube.com/vi/6oXTFb-52Zc/0.jpg","video":"https://www.youtube.com/watch?v=6oXTFb-52Zc"]) videos.append(["title":"Video 2","description":"Description 2","thumbnail":"http://img.youtube.com/vi/dkwuCeCQVg8/0.jpg","video":"https://www.youtube.com/watch?v=dkwuCeCQVg8"]) videos.append(["title":"Video 3","description":"Description 3","thumbnail":"http://img.youtube.com/vi/6Zf_70xM1Cw/0.jpg","video":"https://www.youtube.com/watch?v=6Zf_70xM1Cw"]) } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return videos.count } /* //If I use this there is no SIGABRT error but the cells are empty. func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell:UITableViewCell = UITableViewCell(style:UITableViewCellStyle.Default, reuseIdentifier: "customCell") return cell */ func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("customCell", forIndexPath: indexPath) as! CustomTableViewCell let url = NSURL(string: videos[indexPath.row]["thumbnail"]!) let data = NSData(contentsOfURL: url!) cell.img?.image = UIImage(data: data!) cell.ttl?.text = videos[indexPath.row]["title"] cell.dsc?.text = videos[indexPath.row]["description"] return cell } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } 

CustomTableView.swift

  // // CustomTableViewCell.swift // Cycloid // // import Foundation import UIKit class CustomTableViewCell: UITableViewCell { @IBOutlet weak var img: UIImageView! @IBOutlet weak var ttl: UILabel! @IBOutlet weak var dsc: UILabel! // I also tried deleting the code below. override func awakeFromNib() { super.awakeFromNib() } override func setSelected(selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) } } 

错误日志:

 2015-11-10 18:00:23.069 Cycloid[5922:398570] Unknown class CustomTableViewCell in Interface Builder file. 2015-11-10 18:00:23.074 Cycloid[5922:398570] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UITableViewCell 0x7f96da6a0030> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key dsc.' *** First throw call stack: ( 0 CoreFoundation 0x000000010d55ef45 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x000000010f282deb objc_exception_throw + 48 2 CoreFoundation 0x000000010d55eb89 -[NSException raise] + 9 3 Foundation 0x000000010d927a6b -[NSObject(NSKeyValueCoding) setValue:forKey:] + 288 4 UIKit 0x000000010de2f96f -[UIView(CALayerDelegate) setValue:forKey:] + 173 5 UIKit 0x000000010e133a71 -[UIRuntimeOutletConnection connect] + 109 6 CoreFoundation 0x000000010d49fa80 -[NSArray makeObjectsPerformSelector:] + 224 7 UIKit 0x000000010e132454 -[UINib instantiateWithOwner:options:] + 1864 8 UIKit 0x000000010debe177 -[UITableView _dequeueReusableViewOfType:withIdentifier:] + 388 9 UIKit 0x000000010debe549 -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:] + 71 10 Cycloid 0x000000010d37a2dd _TFC7Cycloid14ViewController9tableViewfS0_FTCSo11UITableView21cellForRowAtIndexPathCSo11NSIndexPath_CSo15UITableViewCell + 125 11 Cycloid 0x000000010d37ac7f _TToFC7Cycloid14ViewController9tableViewfS0_FTCSo11UITableView21cellForRowAtIndexPathCSo11NSIndexPath_CSo15UITableViewCell + 79 12 UIKit 0x000000010ded0e2a -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 782 13 UIKit 0x000000010ded0f3f -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 74 14 UIKit 0x000000010dea6307 -[UITableView _updateVisibleCellsNow:isRecursive:] + 3187 15 UIKit 0x000000010ded9d1c -[UITableView _performWithCachedTraitCollection:] + 92 16 UIKit 0x000000010dec1884 -[UITableView layoutSubviews] + 223 17 UIKit 0x000000010de2fe40 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 710 18 QuartzCore 0x00000001122c559a -[CALayer layoutSublayers] + 146 19 QuartzCore 0x00000001122b9e70 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366 20 QuartzCore 0x00000001122b9cee _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 21 QuartzCore 0x00000001122ae475 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277 22 QuartzCore 0x00000001122dbc0a _ZN2CA11Transaction6commitEv + 486 23 QuartzCore 0x00000001122dc37c _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92 24 CoreFoundation 0x000000010d48a947 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 25 CoreFoundation 0x000000010d48a8b7 __CFRunLoopDoObservers + 391 26 CoreFoundation 0x000000010d47fe2c CFRunLoopRunSpecific + 524 27 UIKit 0x000000010dd764f5 -[UIApplication _run] + 402 28 UIKit 0x000000010dd7b30d UIApplicationMain + 171 29 Cycloid 0x000000010d37be0d main + 109 30 libdyld.dylib 0x000000010fd8a92d start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb) 

去你的故事板,select原型单元格,删除你的自定义类(所以这是一个常规的UITableViewCell再次),build立一次项目,然后设置自定义类返回CustomTableViewCell然后再试一次。