SwiftUI Фильтрация списка базовых данных / NSManagedObject по панели поиска - PullRequest
2 голосов
/ 02 февраля 2020

У меня есть приложение, которое использует Core Data с FetchRequest, который заполняет список. Я хотел бы иметь возможность позволить пользователям искать / фильтровать список, вводя в строку поиска. Я перепробовал несколько подходов, но не могу заставить его работать.

NSManagedObject

public class Item: NSManagedObject, Identifiable {
    @NSManaged public var createdAt: Date?
    @NSManaged public var title: String?
    @NSManaged public var details: String?
    @NSManaged public var tag: String?
}

Вот мой запрос FetchRequest и состояние для поиска

@FetchRequest(fetchRequest: Item.getAllData()) var items: FetchedResults<Item>
@State private var searchTerm: String = ""

Здесь я пытаюсь разрешить фильтрованию списка

VStack {
   SearchBar(text: $searchTerm)
   List {
      ForEach(self.items.filter({
        self.searchTerm.isEmpty ? true :
        $0.localCaseInsensitiveContains(self.searchTerm)
        }), id: \.self){ item in
        ItemView(title: item.title ?? "Title", details: item.details ?? "Details", tag: item.tag ?? "Tag")
        }
    }
}

С таким кодом, как сейчас, я получаю следующую ошибку

Значение типа ' Элемент «не имеет члена» localizedCaseInsensitiveContains '

...