2016-11-22 26 views
0
let cell = UITableViewCell() 
    let dic = dict as Dictionary 
    let z = "Period \(String(Int(indexPath.row + 1)))" // something wrong with this 
    let x: Array = dic[z] as! Array 
    if (x[0] is String) { 
     cell.textLabel?.text = x[0] as? String 
    } else { 
     print("Error: it isnt a string") 
    } 

    tableView.reloadData() 
    return cell 

これは間違っています。私はそれは単純なもののような気がしますが、あなたが私を助けてくれたら分かりますか?ありがとうございました。コンパイル時間エラー

これを実行すると、セグメンテーションフォルトが発生し、このコードに絞り込んでいます。再びplsヘルプ。 ; - ;

+0

デバッガを使用して問題を正確な行に絞り込みます。 – rmaddy

+0

あなたのタイトルに記載されているコンパイル時エラーは何ですか?あなたの質問の本体は実行時エラーのようです。 – rmaddy

+0

@rmaddy私の下の男が私にしてくれたことをやったことがありました。そして、「x:Array = dic [z]」という行のメンバーの「subscript」へのあいまいな参照です!配列 – KyleThe1st

答えて

0

変更する行:あなたはキャストのすべてを必要としない

let z = "Period \(indexPath.row + 1)" 

IndexPath.rowは既にIntであり、IntからStringを作成する必要はありません。

その他の重大な問題もあります。このコードがcellForRowAtメソッドにあると仮定して、決してそこにreloadData()を呼び出してください。ちょうどセルを返す。その方法でテーブルに何もしないでください。

また、テーブルビューからセルを適切にデキューする必要があります。あなたのテーブルビューをより効率的にするでしょう。

+0

どのようにしてセルをデキューしますか?私も鋳造品を編集し、それはまだ私にエラーを与える。 – KyleThe1st

+0

申し訳ありませんが、私はあなたが言ったことをしました、そして今、それは "x:Array = dic [z] as line"という行のメンバー 'subscript'へのあいまいな参照です!配列とコンパイルエラーはなくなりました。 – KyleThe1st

+0

'dic'は特定の型の辞書として宣言する必要があります。 – rmaddy

関連する問題