Использование моделей с подмоделями в CoreData - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь реализовать кэш, используя CoreData.

До этого момента я хранил простые модели, однако у меня есть модель ниже, которая содержит типы данных, такие как CodablePartialUser и CodableFeedItemType.

Как эти типы должны моделироваться в CoreData?

Должен ли я использовать тип Data и сохранять их в формате данных?

Как CodableFeedItemType - это перечисление. Должен ли я хранить исходное значение и снова конвертировать между форматами?

struct CodablePartialUser: Equatable, Codable {
  let userID: String
  let firstName: String
  let lastName: String

  init(userID: String, firstName: String, lastName: String) {
    self.userID = userID
    self.firstName = firstName
    self.lastName = lastName
  }
}

enum CodableFeedItemType: String, Codable {
  case recognition = "RECOGNITION"
  case news = "COMPANY_NEWS"
}

struct CodableFeedItem: Codable {

  let id: String
  let type: CodableFeedItemType
  let createdDate: Date
  let createdBy: CodablePartialUser
  let likesCount: Int
  let commentsCount: Int
  let externalID: String
  let title: String?
  let imageURL: URL?

  init(id: String, type: CodableFeedItemType, createdDate: Date, createdBy: CodablePartialUser, likesCount: Int, commentsCount: Int, externalID: String, title: String?, imageURL: URL?) {
    self.id = id
    self.type = type
    self.createdDate = createdDate
    self.createdBy = createdBy
    self.likesCount = likesCount
    self.commentsCount = commentsCount
    self.externalID = externalID
    self.title = title
    self.imageURL = imageURL

  }
}

1 Ответ

0 голосов
/ 21 апреля 2020
  • Для CodablePartialUser вы можете использовать отношения, создав новый объект с именем «CodablePartialUser»

  • Для CodableFeedItemType вы можете использовать enum как

    enum CodableFeedItemType: String, Codable {
        case recognition = "RECOGNITION"
        case news = "COMPANY_NEWS"
    }
    
    extension CodableFeedItemEntity {
        var type: CodableFeedItemType {
            get {
                return CodableFeedItemType(rawValue: typeRaw)!
            }
            set {
                typeRaw = newValue.rawValue
            }
        }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...