簡體   English   中英

編碼-如何聲明帶有空數組的可選數組類型

[英]Codable - How can I declare optional Array type with empty array

struct Data: Codable {
  let name: String?
  let dataArray: [User] = [User]()
}

dataArray是可選的,因此我想將其分配為空,但是我的Codable失敗了? 我能知道如何實現嗎,我可以將其聲明為Optional而不分配它。 但我想實現這一目標。

您應該手動解碼對象

struct Data: Codable {
  let name: String?
  let dataArray: [User]

   enum Keys: String, CodingKey {
              case name
              case dataArray
   }          

   init(from decoder: Decoder) throws {
       let container = try decoder.container(keyedBy: Keys.self)
        name = try? container.decode(String.self, forKey: .name)
        dataArray =  (try? container.decode(User, forKey: . dataArray)) ?? []
    }
}

或者您可以創建一個包裝器

struct Data: Codable {
  let name: String?
  private let _dataArray: [User]?

  var dataArray : [User] {
      get {
        return   _dataArray ?? []
      }
   }

   enum Keys: String, CodingKey {
                case name
                case dataArray
   }
}

假設它是一個用戶模型:

struct User : Codable {
    let userName: String?
}

struct Data: Codable {
   let name: String?
   //Optional Array
   let dataArray: [User]?
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM