У меня есть два основных объекта данных, каждый из которых имеет отношение ко многим. Я использую tableView
, чтобы пользователи могли выбирать, какие типы зарплат связаны с данным предложением. Проект Swift 3, iOS 10.2.1, и я использую подклассы NSManagedObject
из меню «Редактор».сбой при сбое данных при добавлении более 5 связанных объектов
Все это отлично работает, пока я не попытаюсь добавить шестой класс зарплаты к предложению. Примечание. Если я попытаюсь добавить любое значение, отличное от первых 5, в массив WageClass, он сработает. Но когда я печатаю массив, он печатает столько значений, сколько есть в массиве. Приложение аварийно завершает работу с ошибкой: неожиданно найдено нуль при развертывании необязательного значения.
Я также получаю сообщение об ошибке Thread 1: EXC_BREAKPOINT, но навигатор Breakpoints и lldb не имеют точек останова.
Я тестировал это, пытаясь добавить классовые кластеры индивидуально, добавив их в разные порядки и создав до десяти классов 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
Любая идея почему это позволяет мне добавлять первые пять без жалобы? Почему это только шестой, что он считает нулевым? – camelCaseUpInYourFace
Коды такого же типа работают раньше? Зачем вам шесть из них? Я имею в виду отношения. один из шести контроллеров табличного представления? – Mannopson