web-dev-qa-db-ja.com

エラーの修正方法:このクラスは、キーtableViewのキー値コーディングに準拠していません。

Table ViewSegmented Controlでアプリを作成しましたが、これが初めてです。いくつかのコードといくつかのチュートリアルを使用していますが、機能していません。アプリを実行するとクラッシュし、ログにこのエラーが表示されます:

MyApplication [4928:336085] *キャッチされない例外 'NSUnknownKeyException'によるアプリの終了、理由: '[setValue:forUndefinedKey:]:このクラスはキーtableViewのキー値コーディングに準拠していません。 *最初の呼び出し呼び出しスタック:(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) UIKit 0x0000000103c37d0c - [のUIViewControllerのsetValue:forKey:] + 224 7のUIKit 0x0000000103e6d1de - [UINib instantiateWithOwner:オプション:] + 88 5のUIKit 0x0000000103e6e7fb - [NSArrayのmakeObjectsPerformSelector] - + 109 6 CoreFoundationの0x00000001050a9890 [UIRuntimeOutletConnection接続] + 1864年8のUIKit 0x0000000103c3e8d6を - [UIViewController _loadViewFromNibNamed:bundle:] + 381 9 UIKit 0x0000000103c3f202-[UIViewController loadView] + 178 10 UIKit 0x0000000103c3f560-[UIViewController loadViewIfRequired] + 138 11 UIKit 0x0000000103c3View0Controller0UIKit010UIView0Controller0UIKit01000Kit01000Kit010UISit 13 UIKit 0x0000000103c0f5ca- [UIPresentationController initWithPresentedViewController:presentingViewController:] + 133 14 UIKit 0x0000000103c525bb-[UIViewController _presentViewController:withAnimationController:completion:] + 4002 15 UIKit 0x0000000103c5585c-[UIViewController _performCoordinatedPresentOrDismiss:animated:animated:animated:animated:animated:animated:animated: + 180 21 UIKit 0x0000000103aa6a8d-[UIApplication sendAction:to:from:forEvent:] + 92 22 UIKit 0x0000000103c19e67-[UIControl sendAction:to:forEvent:] + 67 23 UIKit 0x0000000103c1a143-[UIControl _sendActionsForEvents:withEvent:] + 3 27 24 UIKit 0x0000000103c19263-[UIControl touchesEnded:withEvent:] + 601 25 UIKit 0x0000000103b1999f-[UIWindow _sendTouchesForEvent:] + 835 26 UIKit 0x0000000103b1a6d4-[UIWindow sendEvent:] + 0860UI065103263s5UI6d01031035d5263 263 _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メイン+ 114 36 libdyld.dylibの0x00000001064c392d start + 1)libc ++ abi.dylib:NSException型のキャッチされていない例外で終了

私が使用したコードは次のとおりです。

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()  
}

ここにmain.Storyboard

enter image description here

コードを何度もチェックしましたが、機能していません。まず、このチュートリアルを見て、Table Viewのみを使用する必要がありました( https://www.youtube.com/watch?v=ABVLSF3Vqdg )チュートリアルのようにSegmented Controlを使用するとうまくいくと思いました。しかし、まだ機能しません。同じコード、同じエラー。誰か助けてくれますか?

42
Emm

tableViewというアウトレットを想定してストーリーボードを設定しましたが、実際のアウトレット名はmyTableViewです。

ストーリーボードで接続を削除し、正しい変数名に再接続すると、問題が修正されるはずです。

92
Phillip Mills

ある時点で、テーブルビューの名前を「tableView」から「myTableView」に変更した可能性はありますか?

7
Paul Van Wieren