[swift] ObjectMapper를 사용하여 JSON 데이터의 필드를 필수값으로 지정하는 방법은?
- ObjectMapper 라이브러리를 프로젝트에 추가합니다. Cocoapods를 사용하는 경우, Podfile에 다음 라인을 추가하고
pod install
명령어를 실행합니다.
pod 'ObjectMapper'
- ObjectMapper를 사용하여 JSON 데이터를 매핑할 DTO(Data Transfer Object) 클래스를 만듭니다. DTO 클래스에는 매핑할 필드들을 선언합니다.
import ObjectMapper
class MyDTO: Mappable {
var field1: String?
var field2: Int?
required init?(map: Map) {
}
func mapping(map: Map) {
field1 <- map["field1"]
field2 <- map["field2"]
}
}
- 필수 필드로 지정하려는 필드에
!
를 사용합니다.
import ObjectMapper
class MyDTO: Mappable {
var field1: String!
var field2: Int?
required init?(map: Map) {
}
func mapping(map: Map) {
field1 <- map["field1"]
field2 <- map["field2"]
}
}
- ObjectMapper를 사용하여 JSON 데이터를 DTO 객체로 매핑합니다. 이때 필수 필드가 JSON 데이터에 없는 경우, 매핑 과정에서 에러가 발생합니다.
import ObjectMapper
let jsonString = "{\"field1\": \"value1\", \"field2\": 42}"
if let dto = MyDTO(JSONString: jsonString) {
print(dto.field1)
print(dto.field2)
} else {
print("JSON 데이터를 매핑할 수 없습니다.")
}
위의 예제 코드에서 field1
은 필수 필드로 지정되어 있기 때문에, JSON 데이터에 없거나 값이 null인 경우 매핑 과정에서 에러가 발생합니다. 필수 필드인 field1
이 반드시 JSON 데이터에 존재해야 함을 보장할 수 있습니다.
참고로, @objcMembers
를 클래스 위에 추가하여 클래스의 모든 프로퍼티에 Objective-C 컴파일러 지시문을 자동으로 추가해주는 기능을 활성화시킬 수도 있습니다.
@objcMembers
class MyDTO: Mappable {
var field1: String!
var field2: Int?
required init?(map: Map) {
}
func mapping(map: Map) {
field1 <- map["field1"]
field2 <- map["field2"]
}
}
이를 통해 ObjectMapper가 Objective-C 코드와 함께 사용될 때도 필수 필드로 지정된 프로퍼티들이 정상적으로 동작하도록 할 수 있습니다.
참고: ObjectMapper