Я новичок в SwiftUI и Core Data. Я узнал об наблюдаемых объектах, которые можно использовать в качестве объекта среды, чтобы загружать свои данные только один раз и делать их доступными для каждого представления. Там у меня был класс, соответствующий ObservableObject
, и я мог публиковать sh свои локальные переменные / данные.
Теперь, когда я изучил Core Data, мне интересно, как я могу сделать что-то знакомое. Когда я создаю свои сущности и отношения, я получаю что-то связанное с этим:
extension Foo {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Foo> {
return NSFetchRequest<Foo>(entityName: "Foo")
}
@NSManaged public var name: String
@NSManaged public var date: Date
@NSManaged public var bars: NSSet
public var barsArray: [Bar] {
let set = bars as? Set<Bar> ?? []
return Array(set)
}
}
Я создал barsArray
для работы с массивами. В своих представлениях каждый раз, когда мне нужен основной объект данных, я звоню:
@FetchRequest(sortDescriptors: [NSSortDescriptor(keyPath: \Foo.date, ascending: false)]) var foos: FetchedResults<Foo>
Мой вопрос: как я могу создать класс Cora Data Manager (?), Чтобы мои данные были доступны, как в Observable Objects. . Или есть что-то еще лучше / проще?
Чтобы дать больше похоже на проблему реального мира: у меня есть сущность с категориями, и в представлениях человека моего приложения я вызываю запрос на выборку, чтобы получить доступ к категориям. Но имеет смысл загрузить их только один раз и передать нужным представлениям, и возникает вопрос: как? Надеюсь, в этом есть смысл.