2017-02-06 1 views
0

私は2つのコアデータエンティティを持ち、それぞれが一対多の関係を持っています。私はtableViewを使用して、ユーザーが特定のプロポーザルに関連するwageClassesを選択できるようにしています。プロジェクトはSwift 3、iOS 10.2.1です。エディタメニューからNSManagedObjectサブクラスを使用しています。関連する5つ以上のオブジェクトを追加すると、コアデータアプリケーションがクラッシュする

プロポーザルに6番目のwageClassを追加しようとするまで、これはすべて素晴らしいです。 注:最初の5以外の値をWageClass配列に追加しようとすると、クラッシュします。しかし、配列を出力すると、配列内の値と同じ数の値が出力されます。アプリがクラッシュし、エラーが発生しました:オプション値のアンラッピング中に予期せずnilが見つかりました。

また、スレッド1:EXC_BREAKPOINTエラーが表示されますが、ブレークポイントナビゲータとlldbにはブレークポイントはありません。

wageClassesを別々に追加し、異なる注文で追加し、最大10個のwageClassesを作成してテストしました(最後に作成されたwageClassがtableViewにロードされていない問題があるかどうかを確認する)しかし運はない、私は同じ結果を得る。あなたのコメントのための

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "AddWageClassCell", for: indexPath) 

    let wageClass = wageClasses[indexPath.row] 


    let wageClassStatus = wageClass.value(forKey: "checked") as? Bool ?? true 

    cell.textLabel?.text = wageClass.value(forKey: "wageClassName") as? String 

    var accessoryType = UITableViewCellAccessoryType.none 
    var tintColor = UIColor.clear 

    if (wageClassStatus) { 
     accessoryType = UITableViewCellAccessoryType.checkmark 
     tintColor = UIColor.green 

    } 

    cell.accessoryType=accessoryType 
    cell.tintColor = tintColor 


    return cell 

} 

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    { 


     let wageClassObject = self.wageClasses[indexPath.row] 

     var wageClassStatus = wageClassObject.value(forKey: "checked") as? Bool ?? false 

     wageClassObject.setValue(!wageClassStatus, forKey:"checked") 





     proposalToEdit?.addToWageClasses(wageClassObject) 




     do { 
      try 
      ad.saveContext() 
     } catch let error as NSError { 
      print("Cannot save object: \(error), \(error.localizedDescription)") 
     } 

     tableView.deselectRow(at: indexPath,animated:false) 

     tableView.reloadRows(at: [indexPath], with: .none) 






    } 

感謝を:私は追加しているのはここ

です!

+0

"オプションの '?'値があり、 'nil'として返されます。 'nil'は実際には何もありません。 ''をアンラップする必要があります! – Mannopson

+0

なぜあなたは苦情なしで最初の5つを追加することができますか?なぜなら、それはゼロでないと分かっているのは6番目の理由だけですか? – camelCaseUpInYourFace

+0

同じ種類のコードが以前に動作していますか? 6テーブルビューコントローラ? – Mannopson

答えて

0

最後に、wageClassesというセルを別のxibの別のtableViewに書式設定したときに、変数のアンラッピングを強制していました。 if let文でラップしたとき

if let cell = tableView.cellForRow(at: indexPath) as? WageCell { 
       configureCell(cell: cell, indexPath: indexPath as NSIndexPath) 
      } else { 
       print("something is nil") 
      } 

      } 

クラッシュがなくなった。

関連する問題