Поместите запрос на выборку внутри
init (filter: String) {ваш запрос на выборку}
, затем вызовите AddSetView (filter: yourFilter)
Я недавно что-то сделал аналогичные эксперименты со SwiftUI. В моем случае пользователь создает категорию, и когда выбирается выбранная категория, я перечисляю элементы todo, указывающие c на категорию. Поэтому мне нужно отфильтровать результаты по выбранной категории. Мой код выглядит следующим образом, надеюсь, это поможет:
struct TodoList: View {
@Environment(\.managedObjectContext) var context
var fetchRequest: FetchRequest<Todo>
init(filter: String) {
fetchRequest = FetchRequest<Todo>(entity: Todo.entity(), sortDescriptors:[
NSSortDescriptor(keyPath: \Todo.dateCreated, ascending: true)
], predicate: NSPredicate(format: "parentCategory.title == %@", filter))
}
Я называю представление следующим образом:
TodoList(filter: selectedCategory.title!)
Последний кусок головоломки заключался в добавлении переменной в расширение в мой Todo + CoreDataProperties.swift
Я нашел решение для расширения на Hacking With Swift. https://www.hackingwithswift.com/books/ios-swiftui/dynamically-filtering-fetchrequest-with-swiftui
var wrappedTodo: String {
parentCategory?.title ?? ""
}
Мне пришлось установить для моего основного объекта данных codegen значение Manual / None, а затем создать подклассы NSManagedObject. Первоначально это дало всевозможные ошибки, поэтому мне пришлось удалить мою модель. Создайте новый, установите кодовый код для каждого объекта на ручной / нет. Затем создайте подклассы NSManagedObject («Редактор»> «Создать подкласс NSManagedObject»). Затем я смог собрать без ошибок. После этого вы сможете редактировать файл (Entity) + CoreDataProperties.swift.