Это мой объект:
{
"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к значению по умолчанию?