2016-10-24 7 views
0

私は新しいIOS開発者です。私はコアデータベースを使って作業しています。私は3つの異なる属性(文字列、日付、ダブル)を持つテーブルを持っています。私は別の配列に3つの属性を取得したい。だから私は完全にテーブルビューでそれらを表示することができます。 は、私はXcodeの8かつ迅速な3コアデータベースデータを配列にフェッチしました

を使用しています私は怒鳴る示すような配列にそれらを入れてみましたが、私はこのエラーました:

Thread1 :Error EXC_BAD_INSTRUCTION. Also, in the output window shows fatal error: Index out of range

var first = [String]() 
var last = [Double]() 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    let request = NSFetchRequest <NSFetchRequestResult> (entityName : "EXPENSEAMOUNT_TABLE") 
    request.returnsObjectsAsFaults = false 

    do { 
     let result = try self.context.fetch(request) 

     if (result.count > 0) { 
      for index in 0 ..< result.count 
      { 
       let person = result[index] as! NSManagedObject 

       last [index] = person.value(forKey : "expenseAmount") as! Double //ERROR fires here 
       first [index] = person.value(forKey: "expenseAccountCode") as! String 
        // let second = person.value(forKey: "expenseDate") // I hide this because I don't know how to save the date into an array ? 

      } 
     } 

    } catch { 
     let fetchError = error as NSError 
     print(fetchError) 
    } 

    var cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customeCell 
    cell.dateText.text = first[indexPath.row] 
    cell.amountText.text = String (last[indexPath.row]) 


    return cell 
} 

私はこれをどのように修正することができますが!

+0

あなたは 'first'と' last'配列にデータを追加している生のテーブルの最後のレコードに私のために、各時間を出力しますか? –

+0

last [index] = person.value(forKey: "expenseAmount")as!ここにダブル。私はデータを取得する方法を変更してください私の答えは、ベローズをチェックしてください –

答えて

0

テーブルビューを実装する方法が間違っています。セクション内の行数から行数を戻す必要があります。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    let request = NSFetchRequest <NSFetchRequestResult> (entityName : "EXPENSEAMOUNT_TABLE") 
request.returnsObjectsAsFaults = false 

    do { 
     let result = try self.context.fetch(request) 

     if (result.count > 0) { 
      for index in 0 ..< result.count 
      { 
       let person = result[index] as! NSManagedObject 

       last [index] = person.value(forKey : "expenseAmount") as! Double //ERROR fires here 
      first [index] = person.value(forKey: "expenseAccountCode") as! String 


      } 
     } 

    } catch { 
     let fetchError = error as NSError 
     print(fetchError) 
    } 
return result.count 
} 

そして

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    var cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customeCell 
    cell.dateText.text = first[indexPath.row] 
    cell.amountText.text = String (last[indexPath.row]) 
    return cell 
} 
+0

私は同じ問題を持って "スレッド1:エラーEXC_BAD_INSTRUCTION" –

0

Iが蛇腹示すようにtableViewにデータを表示するための他の方法を試みたインデックスパスで行のセルからセルを返します。 問題は、今では

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

let request = NSFetchRequest <NSFetchRequestResult> (entityName : "EXPENSEAMOUNT_TABLE") 

    request.returnsObjectsAsFaults = false 

var cell = self.tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! customeCell 

do { 
     let result = try self.context.fetch(request) 

     if (result.count > 0) { 

      for index in 0 ..< result.count 
      { 
       let person = result[index] as! NSManagedObject 

       if let first = person.value(forKey : "expenseAccountCode"), 
        let last = person.value(forKey : "expenseAmount") , 
        let second = person.value(forKey: "expenseDate") 
       { 

        cell.dateText.text = String (describing: second) 
        cell.amountText.text = String (describing: last) 
        cell.nameText.text = String (describing: first) 

             } 

      } 
     } 
    }catch{ let fetchError = error as NSError 
     print(fetchError)} 
    return cell 
    } 
関連する問題