iOS/Swift 64

오류 처리 함수 구현

https://explorer89.tistory.com/214 Swift의 에러 처리 방법에 대해 설명해주세요.Swift에서 **에러 처리(Error Handling)**는 프로그램 실행 중 발생할 수 있는 예외 상황에 대비하여 오류를 처리하고 안정적으로 코드가 실행될 수 있도록 도와줍니다. Swift는 명확하고 안전한 에러 처explorer89.tistory.com  do-catch 구문은 Swift에서 오류가 발생할 수 있는 코드의 실행을 감싸는 구문으로, 오류 발생 시 처리 방법을 지정할 수 있습니다. 이 구문은 특히 파일 입출력이나 데이터베이스와 같은 작업에서 유용하며, Swift는 이러한 오류 발생 가능성이 있는 함수에서 throws 키워드를 사용하여 호출자가 오류를 처리할 수 있도록 합니다. ..

iOS/Swift 2024.11.14

날짜와 시간을 특정형식의 문자열로 반환하는 코드

Date 타입에 두 가지 계산 속성(computed properties)을 추가하여 날짜와 시간을 특정 형식의 문자열로 변환하는 기능을 제공 extension Date { var dayAndTimeText: String { let timeText = formatted(date: .omitted, time: .shortened) if Locale.current.calendar.isDateInToday(self) { let timeFormat = NSLocalizedString("Today at %@", comment: "Today at time format string") return String(format: timeFormat, ti..

iOS/Swift 2024.10.09

let title = "\(String(describing: model.title)) + 방문"여기서 왜 String(describing으로 감싼거야?그냥 "\(model.title) + 방문" 하면 안돼?

String(describing:)로 감싸는 이유는 주로 Optional 타입의 값을 안전하게 출력하려고 할 때 사용됩니다.만약 model.title이 Optional 타입이라면, 직접 "\(model.title)"으로 문자열 보간을 시도할 경우 Optional("value")와 같이 출력될 수 있습니다. 반면, String(describing: model.title)를 사용하면 값이 있을 경우 그 값을, 없을 경우 "nil"을 출력하게 됩니다.차이점:"\(model.title)": model.title이 nil일 경우 "Optional(nil)"이라는 문자열이 출력됩니다."String(describing: model.title)": model.title이 nil일 경우 "nil"이 출력됩니다.따라서, ..

iOS/Swift 2024.10.05

compactMap - 새로운 배열 생성

compactMap은 Swift의 배열이나 컬렉션에서 사용되는 고차 함수로, 클로저를 적용하여 nil이 아닌 값만 필터링하고, 동시에 값을 변환하여 새로운 배열을 반환하는 기능을 제공합니다.  일반적인 map과 flatMap 함수와 달리, compactMap은 변환 과정에서 nil 값을 제거하는 역할을 합니다. 기본 문법let resultArray = array.compactMap { element in // 변환 및 필터링 작업}  compactMap 클로저 내부에서 nil을 반환하면 그 요소는 새로운 배열에서 제외되고, nil이 아닌 값만 결과 배열에 포함됩니다. 사용 예시1. Int 문자열 배열을 정수로 변환 숫자로 변환 가능한 문자열만 남기고 nil 값은 제거합니다.let stringArra..

iOS/Swift 2024.09.21

공공 API를 통해 데이터를 가져오는 중에 발생한 오류 해결

오류 내용The data couldn’t be read because it isn’t in the correct format.공공 API를 통해 데이터를 불러오는 과정에서 데이터 모델 형식이 맞지 않아 오류가 발생했습니다.   내가 설계한 데이터 모델import Foundation// MARK: - Main Response Modelstruct ImageResponse: Codable { let response: ImageResponseBody}struct ImageResponseBody: Codable { let header: ResponseHeader let body: ImageResponseBodyContent}struct ResponseHeader: Codable { let ..

iOS/Swift 2024.09.21

데이터 모델 이름을 바꿔야 한다면?

JSON 응답의 구조와 코드에 있는 구조체의 불일치를 해결하기 위해서는 구조체 이름을 유지하면서, 일부 이름을 수정하고 적절한 타입 매핑을 수행해야 합니다.  실제 외부 API를 통해 받아온 데이터 모델 { "response": { "header": { "resultCode": "0000", "resultMsg": "OK" }, "body": { "items": { "item": [ { "contentid": "1095732", "originimgurl": "http://tong.visitkorea.or.kr/cms/resource/67/3035567_image2_1.png", ..

iOS/Swift 2024.09.06