I made an app with Table View and Segmented Control, and this is my first time. I'm using some code and some tutorials, but It's not working. When I run my app It's crashing and it's showing this Error in logs:

MyApplication[4928:336085] * Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key tableView.' * First throw call stack: ( 0 CoreFoundation 0x000000010516fd85 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x0000000105504deb objc_exception_throw + 48 2 CoreFoundation 0x000000010516f9c9 -[NSException raise] + 9 3 Foundation 0x000000010364e19b -[NSObject(NSKeyValueCoding) setValue:forKey:] + 288 4 UIKit 0x0000000103c37d0c -[UIViewController setValue:forKey:] + 88 5 UIKit 0x0000000103e6e7fb -[UIRuntimeOutletConnection connect] + 109 6 CoreFoundation 0x00000001050a9890 -[NSArray makeObjectsPerformSelector:] + 224 7 UIKit 0x0000000103e6d1de -[UINib instantiateWithOwner:options:] + 1864 8 UIKit 0x0000000103c3e8d6 -[UIViewController _loadViewFromNibNamed:bundle:] + 381 9 UIKit 0x0000000103c3f202 -[UIViewController loadView] + 178 10 UIKit 0x0000000103c3f560 -[UIViewController loadViewIfRequired] + 138 11 UIKit 0x0000000103c3fcd3 -[UIViewController view] + 27 12 UIKit 0x000000010440b024 -[_UIFullscreenPresentationController _setPresentedViewController:] + 87 13 UIKit 0x0000000103c0f5ca -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 133 14 UIKit 0x0000000103c525bb -[UIViewController _presentViewController:withAnimationController:completion:] + 4002 15 UIKit 0x0000000103c5585c -[UIViewController _performCoordinatedPresentOrDismiss:animated:] + 489 16 UIKit 0x0000000103c5536b -[UIViewController presentViewController:animated:completion:] + 179 17 UIKit 0x00000001041feb8d __67-[UIStoryboardModalSegueTemplate newDefaultPerformHandlerForSegue:]_block_invoke + 243 18 UIKit 0x00000001041ec630 -[UIStoryboardSegueTemplate _performWithDestinationViewController:sender:] + 460 19 UIKit 0x00000001041ec433 -[UIStoryboardSegueTemplate _perform:] + 82 20 UIKit 0x00000001041ec6f7 -[UIStoryboardSegueTemplate perform:] + 156 21 UIKit 0x0000000103aa6a8d -[UIApplication sendAction:to:from:forEvent:] + 92 22 UIKit 0x0000000103c19e67 -[UIControl sendAction:to:forEvent:] + 67 23 UIKit 0x0000000103c1a143 -[UIControl _sendActionsForEvents:withEvent:] + 327 24 UIKit 0x0000000103c19263 -[UIControl touchesEnded:withEvent:] + 601 25 UIKit 0x0000000103b1999f -[UIWindow _sendTouchesForEvent:] + 835 26 UIKit 0x0000000103b1a6d4 -[UIWindow sendEvent:] + 865 27 UIKit 0x0000000103ac5dc6 -[UIApplication sendEvent:] + 263 28 UIKit 0x0000000103a9f553 _UIApplicationHandleEventQueue + 6660 29 CoreFoundation 0x0000000105095301 _CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION_ + 17 30 CoreFoundation 0x000000010508b22c __CFRunLoopDoSources0 + 556 31 CoreFoundation 0x000000010508a6e3 __CFRunLoopRun + 867 32 CoreFoundation 0x000000010508a0f8 CFRunLoopRunSpecific + 488 33 GraphicsServices 0x000000010726dad2 GSEventRunModal + 161 34 UIKit 0x0000000103aa4f09 UIApplicationMain + 171 35 Dhikr 0x0000000101f26282 main + 114 36 libdyld.dylib 0x00000001064c392d start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException

The code that I used is:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

let foodList:[String] = ["Bread", "Meat", "Pizza", "Other"]
let drinkList:[String] = ["Water", "Soda", "Juice", "Other"]

@IBOutlet weak var mySegmentedControl: UISegmentedControl!
@IBOutlet weak var myTableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    var returnValue = 0

    switch(mySegmentedControl.selectedSegmentIndex) {
    case 0:
        returnValue = foodList.count
        break
    case 1:
        returnValue = drinkList.count
        break
    default:
        break
    }

    return returnValue
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let myCell = tableView.dequeueReusableCellWithIdentifier("myCells", forIndexPath: indexPath)

    switch(mySegmentedControl.selectedSegmentIndex) {
    case 0:
        myCell.textLabel!.text = foodList[indexPath.row]
        break
    case 1:
        myCell.textLabel!.text = drinkList[indexPath.row]
        break
    default:
        break
    }

    return myCell
}

@IBAction func segmentedControlActionChanged(sender: AnyObject) {
    myTableView.reloadData()  
}

Here is main.Storyboard

enter image description here

I checked the code many times, but it's not working. First I had to use only Table View, watching this tutorial (https://www.youtube.com/watch?v=ABVLSF3Vqdg) I thought it will work to use Segmented Control as in tutorial. But still doesn't work. Same code, same error. Can someone help me ?

推荐答案

You have your storyboard set up to expect an outlet called tableView but the actual outlet name is myTableView.

If you delete the connection in the storyboard and reconnect to the right variable name, it should fix the problem.

Swift相关问答推荐

运行异步任务串行运行

SWIFT计划计时器方法在时间间隔后未被调用

如何使泡泡上的箭头直达封闭矩形

正在接收具有不完整数据错误的URL请求

在SwiftUI中,我如何确保带有符号的单词不会被拆分为两行?

允许视图在视图内更改

BLE 在 ESP32 和 Iphone 之间发送字符串

Swift计时器未触发

如何在 macOS/AppKit 的窗口选项卡上接受拖动项目的放置?

您是否必须手动指定您的 DispatchQueue 是串行的?

如何 for each 用户制作一个单独的按钮,以便在按下它时切换 isFollowingUser Bool 并更改为关注?

如何在填充上添加 if else 语句? SwiftUI

(SwiftLint)如果有正文,如何编写规则(可能是自定义),在{之后总是\n(换行)?

在视图中设置所有变量

快速的 AES 加密

Swift 3.0 的 stringByReplacingOccurencesOfString()

快速覆盖属性

两个 Date 对象之间的所有日期 (Swift)

Swift中方法的弃用和其他属性,如何?

通过单击表格视图中的单元格打开新的视图控制器 - Swift iOS