私は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)
}
感謝を:私は追加しているのはここ
です!
"オプションの '?'値があり、 'nil'として返されます。 'nil'は実際には何もありません。 ''をアンラップする必要があります! – Mannopson
なぜあなたは苦情なしで最初の5つを追加することができますか?なぜなら、それはゼロでないと分かっているのは6番目の理由だけですか? – camelCaseUpInYourFace
同じ種類のコードが以前に動作していますか? 6テーブルビューコントローラ? – Mannopson