Должен ли я создавать struct для каждого объекта core data

#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 или нет?