#ios #swift #core-data #swiftui
#iOS #swift #core-data #swiftui
Вопрос:
public class ApiEntity: NSManagedObject {
}
extension ApiEntity {
@nonobjc public class func fetchRequest() -> NSFetchRequest<ApiEntity> {
return NSFetchRequest<ApiEntity>(entityName: "ApiEntity")
}
@NSManaged public var paths: String?
@NSManaged public var value: String?
@NSManaged public var watch: Bool
@NSManaged public var watchValue: String?
@NSManaged public var endPoint: EndPointEntity?
}
Объект Core data выглядит следующим образом. Поскольку это класс, поэтому, когда я использую его с SwiftUI, я должен обновлять view вручную каждый раз, когда изменяется свойство.
Мой вопрос
Следует создать соответствующую структуру, например
struct ApiEntityStruct {
public var paths: String?
}
для каждого объекта и преобразовывать в struct при чтении и обратно в class при записи?
Редактировать
Похоже, что NSManagedObject соответствует ObjectObservable. Итак, если он объявлен @ObservedObject, он должен работать.
Комментарии:
1. Это хорошее начало: blckbirds.com/post/core-data-and-swiftui /# Как говорится в официальном документе, NSManagedObject соответствует ObjectObservable, я думаю, вы можете легко обновлять свое представление при изменении объекта без создания дополнительных структур.
2. Но я обнаружил, что только поля, украшенные @Published, могут обновлять представление. Но поле в NSManagedObject, даже не украшенное им, также может обновить представление.
3. Итак, вам нужны структуры для SwiftUI или нет?