Обновление объекта с отсутствующими свойствами json, возвращенными к значению по умолчанию - PullRequest
0 голосов
/ 02 октября 2018

Это мой объект:

{
 "id": 1,
 "discriminator": "product"
}

Мой код:

@objcMembers
class RLBCategory: Base {

enum CategoryType: String {
    case product
    case event
    case workshop
    case industry
}

// MARK: - Properties
dynamic var name: String?
dynamic var discriminator: String?

override func mapping(map: Map) {
    super.mapping(map: map)

    name <- map["name"]
    discriminator <- map["discriminator"]
      }
   }
  var json = ["id": 1, "name": "Sport", "discriminator": "product"] as [String: Any]
  var mapper = Map(mappingType: .fromJSON, JSON: json)
  var category = RLBCategory(map: mapper)

  XCTAssertEqual(category?.id, 1)
  XCTAssertEqual(category?.name, "Sport")
  XCTAssertEqual(category?.discriminator, RLBCategory.CategoryType.product.rawValue)

  json = ["id": 1, "name": "Football", "discriminator": "product"] as [String: Any]
  mapper = Map(mappingType: .fromJSON, JSON: json)
  category = RLBCategory(map: mapper)

  XCTAssertEqual(category?.id, 1)
  XCTAssertEqual(category?.name, "Football")
  XCTAssertEqual(category?.discriminator, RLBCategory.CategoryType.product.rawValue)

  json = ["id": 1, "discriminator": "product"] as [String: Any]
  mapper = Map(mappingType: .fromJSON, JSON: json)
  category = RLBCategory(map: mapper)

  XCTAssertEqual(category?.id, 1)
  XCTAssertEqual(category?.name, "Football")
  XCTAssertEqual(category?.discriminator, 
  RLBCategory.CategoryType.product.rawValue)

Я ожидал, что все утверждения модульного теста будут true.Обновленное имя объекта не следует изменять, поскольку оно отсутствует в JSON.

XCTAssertEqual(category?.name, "Football") означает false, поскольку обновленное имя объекта теперь равно nil.

Как обновить объект Json с отсутствующими свойствами Jsonк значению по умолчанию?

...