Я получаю ошибку Index Beyond Bounds
и Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
при попытке удалить индекс базовых данных в SwiftUI.
По сути, у меня есть сущность базовых данных (Dates
), содержащая только атрибут date
(ограничение - строка). Это имеет отношение один ко многим с моей Records
сущностью. Я пытаюсь отобразить список всех date
, которые у меня есть. Отображение в порядке, но при попытке удалить мое приложение вылетает.
Мой вид в настоящее время выглядит следующим образом:
import SwiftUI
struct Settings: View {
@Environment(\.managedObjectContext) var managedObjectContext
@FetchRequest(entity: Dates.entity(), sortDescriptors: []) var dates: FetchedResults<Dates>
var body: some View {
VStack {
List{
ForEach(dates, id: \.self) { day in
Text("\(day.wrappedDate)")
}.onDelete { (indexSet) in
let dateToDelete = self.dates[indexSet.first!]
self.managedObjectContext.delete(dateToDelete)
do {
try self.managedObjectContext.save()
} catch {
print(error)
}
}
}
}
}
}
Я разбил свой вид до минимума, чтобы увидеть если это поможет, но, к сожалению, нет.
При попытке удалить. Ошибка, которую я получаю в выводе:
2020-04-29 16:08:23.980755+0300 TESTTEST[28270:2245700] [General] *** -[__NSArray0 objectAtIndex:]: index 0 beyond bounds for empty NSArray
Если я скажу 9 дат, это скажет index 8 beyond bounds [0 .. 7]
, так что это не обязательно связано с пустым массивом.
Дальнейший вывод:
=== AttributeGraph: cycle detected through attribute X ===
несколько раз, а затем:
Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
в моем AppDelegate.
Может ли проблема быть в создании представления, а не в удалении?
Пожалуйста, имейте в виду, что я самоучка, абсолютный нуб, когда дело доходит до кодирования, поэтому я могу упустить что-то очевидное здесь. Любая помощь в получении ответа самостоятельно в форме инструкций также будет принята с благодарностью (поэтому я могу узнать, как это исправить).
РЕДАКТИРОВАТЬ:
I кажется, я узнал, что является причиной проблемы. В другом представлении я также генерирую список всех date
с, где я применяю индекс для Dates
. Изменим код сейчас, чтобы увидеть, исправит ли это ....
TB C!