(Изначально) получение повторяющихся результатов из FetchedObjectsIOS

Программируем под IOS
Ответить
Anonymous
 (Изначально) получение повторяющихся результатов из FetchedObjects

Сообщение Anonymous »

Я хожу на курсы программирования для iOS и работаю над классным проектом, связанным с базовыми данными, фильтрацией и сортировкой. Класс плохо преподает, но я близок к этому. Я не хочу, чтобы кто-то делал за меня мой проект, но, думаю, я запутался в отладке того, что сейчас вижу.
Это приложение с меню. Существует функция, которая извлекает пункты меню из вызова Rest и добавляет их в объект Core Data. Я вполне уверен, что мне позвонят и вставят 12 элементов в сущность «Блюдо».
У меня есть представление, которое пытается позволить вам просмотреть все блюда, оно включает панель поиска для сужения поиска. Когда я впервые вижу это представление загруженным, оно показывает 24 блюда; каждое блюдо появляется дважды. Код для этого:

Код: Выделить всё

            NavigationView {
FetchedObjects (
predicate:buildPredicate(),
sortDescriptors: buildSortDescriptors()
) {
(dishes: [Dish]) in
List {
Text(String(dishes.count) + " dishes")

ForEach(dishes, id: \.self) {
dish in
DisplayDish(dish).onTapGesture {apGesture in
self.showAlert.toggle()
}
}
}
}
}.searchable(text: $searchText, prompt: "Search items")
(Я включил этот текст в число блюд, чтобы сузить суть происходящего, и он действительно говорит, что при первом появлении представления имеется 24 блюда)
Предикат строится следующим образом:

Код: Выделить всё

    private func buildPredicate() -> NSPredicate {
if searchText.isEmpty {
NSPredicate(value: true)
} else {
NSPredicate(format: "name CONTAINS[cd] %@", searchText)
}
}
Я очень открыт для возможности того, что делаю что-то не так, хех. Но вот что меня действительно сбивает с толку: если я ввожу что-то в строку поиска, она не только правильно фильтрует, но и не находит дубликатов. Это немного странно. Теперь я очищаю строку поиска и прекращаю поиск, поэтому мне следует вернуться к использованию истинного предиката, и теперь он говорит, что есть 12 блюд и не показывает дубликатов. Все это заставляет меня думать, что на самом деле в сущности всего 12 блюд, и мое внимание сужается до выяснения того, почему FetchObjects возвращает 24 при первом использовании представления.
Я понимаю, что есть много кода, который я не включил; если я упустил что-то, что кажется важным/необходимым, я могу дополнить. Еще одна вещь, которую я заметил и которая может иметь значение, это то, что функция, загружающая блюда, действительно вызывается дважды. Но первый вызов получает NSError об отмене, предположительно потому, что второй приземляется и заменяет его, и когда пыль очищается, функция загрузки фактически сохраняет только один раз, и запрос сразу после этого показывает 12 блюд, а не 24.
Будем очень благодарны за любую помощь.>

Подробнее здесь: https://stackoverflow.com/questions/798 ... hedobjects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»