Swift는 ObjectMapper를 사용하여 JSON 데이터를 객체로 변환하는 데에 매우 유용한 라이브러리입니다. 이 라이브러리를 사용하면 객체의 속성을 원하는 형식으로 변환할 수 있습니다. 이번 예시에서는 전화번호를 입력받고, 이를 특정 형식으로 변환하는 방법에 대해 설명하겠습니다.
ObjectMapper 설치
먼저, ObjectMapper 라이브러리를 설치해야 합니다. Podfile
에 다음과 같은 코드를 추가하고, 터미널에서 pod install
명령어를 실행하여 설치합니다.
pod 'ObjectMapper'
모델 클래스 생성
해당 속성을 포함하는 모델 클래스를 생성합니다. 다음은 예시 모델 클래스입니다.
import ObjectMapper
class User: Mappable {
var name: String?
var phoneNumber: String?
required init?(map: Map) {}
func mapping(map: Map) {
name <- map["name"]
phoneNumber <- (map["phone_number"], PhoneNumberTransform())
}
}
위 코드에서 phoneNumber
속성은 전화번호 형식으로 변환됩니다. 이를 위해 ObjectMapper의 TransformType
프로토콜을 구현하는 PhoneNumberTransform
클래스를 생성해야 합니다.
변환 클래스 구현
다음은 PhoneNumberTransform
클래스의 구현 예시입니다.
import ObjectMapper
class PhoneNumberTransform: TransformType {
typealias Object = String
typealias JSON = String
func transformFromJSON(_ value: Any?) -> Object? {
if let phoneNumber = value as? String {
// 전화번호 형식으로 변환
let formattedNumber = formatPhoneNumber(phoneNumber)
return formattedNumber
}
return nil
}
func transformToJSON(_ value: Object?) -> JSON? {
return value
}
func formatPhoneNumber(_ phoneNumber: String) -> String {
// 전화번호 형식으로 변환하는 로직을 구현
// 예: "010-1234-5678"
// 예시에서는 단순히 하이픈을 추가하는 예시로 작성되어 있습니다.
let formattedNumber = phoneNumber.prefix(3) + "-" + phoneNumber[3..<7] + "-" + phoneNumber.suffix(4)
return String(formattedNumber)
}
}
위 코드에서 transformFromJSON
함수는 JSON 데이터를 객체의 속성으로 변환할 때 호출되며, transformToJSON
함수는 객체의 속성을 JSON 데이터로 변환할 때 호출됩니다. formatPhoneNumber
함수는 전화번호를 원하는 형식으로 변환하는 로직을 구현하는 함수입니다.
ObjectMapper 사용
이제 ObjectMapper를 사용하여 JSON 데이터를 원하는 형식으로 변환할 수 있습니다. 다음은 변환 예시입니다.
import ObjectMapper
let json = """
{
"name": "John Doe",
"phone_number": "01012345678"
}
"""
if let user = Mapper<User>().map(JSONString: json) {
print("Name: \(user.name ?? "")")
print("Formatted Phone Number: \(user.phoneNumber ?? "")")
}
위 코드에서는 JSONString
을 사용하여 JSON 데이터를 객체로 변환하고, 변환된 객체의 속성을 출력하는 예시입니다.
결론
Swift에서 ObjectMapper를 사용하여 객체의 속성을 원하는 형식으로 변환할 수 있습니다. 위 예시를 참고하여 전화번호 형식으로 변환하는 로직을 구현해보세요. ObjectMapper에 대한 자세한 정보는 링크를 참고하시기 바랍니다.