본문 바로가기

Swift

(82)
ArraySlice와 Array Array와 ArraySlice는 Swift에서 배열 데이터를 다루는 방식의 차이를 보여줍니다. 1. ArraySwift에서 일반적인 배열 타입입니다.독립된 데이터 컨테이너로, 데이터는 배열 내에 직접 저장됩니다.모든 요소에 접근할 수 있으며, 다양한 연산을 지원합니다.특징:메모리를 별도로 할당하여 데이터를 저장.독립적으로 생성되고 관리됨.직관적이고 대부분의 경우에 사용됨let array: Array = [1, 2, 3, 4, 5]print(array[0]) // 출력: 1  2. ArraySlice배열의 일부를 참조하는 타입입니다.배열에서 서브스크립트 연산(Array[range]) 등을 사용하여 생성됩니다.원본 배열의 메모리를 공유하므로, 별도의 메모리 복사가 일어나지 않습니다.특징:원본 배열의 메모리..
스위프트에서 Extension은 어떻게 사용되나요? Extension은 기존 클래스, 구조체, 열거형, 프로토콜에 새로운 기능을 추가할 수 있는 Swift의 강력한 기능입니다.기존 소스 코드를 수정하지 않고도 타입에 기능을 확장할 수 있어, 재사용성과 가독성을 높이는 데 유용합니다. 1. Extension의 주요 특징기능 추가: 메서드, 계산 속성, 서브스크립트, 초기화 메서드 등 추가 가능.기존 소스 코드 수정 불필요: 외부 라이브러리나 기본 타입도 확장 가능.프로토콜 준수: 기존 타입에 프로토콜을 채택하고 구현 추가 가능.저장 속성 불가: 계산 속성만 추가 가능.오버라이드 불가: 기존 메서드의 동작은 변경할 수 없음. 2. Extension 활용 예시1) 기존 타입 확장extension String { func reversedString() ->..
Core Data의 Bool? 이거는 왜 안되나? import Foundationimport CoreDataimport UIKitextension FeedEntity { @nonobjc public class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: "FeedEntity") } @NSManaged public var uuid: UUID? @NSManaged public var imagePaths: String? @NSManaged public var tripLog: String? @NSManaged public var location: String? @NSManaged public var date: Date? ..
오류 처리 함수 구현 https://explorer89.tistory.com/214 Swift의 에러 처리 방법에 대해 설명해주세요.Swift에서 **에러 처리(Error Handling)**는 프로그램 실행 중 발생할 수 있는 예외 상황에 대비하여 오류를 처리하고 안정적으로 코드가 실행될 수 있도록 도와줍니다. Swift는 명확하고 안전한 에러 처explorer89.tistory.com  do-catch 구문은 Swift에서 오류가 발생할 수 있는 코드의 실행을 감싸는 구문으로, 오류 발생 시 처리 방법을 지정할 수 있습니다. 이 구문은 특히 파일 입출력이나 데이터베이스와 같은 작업에서 유용하며, Swift는 이러한 오류 발생 가능성이 있는 함수에서 throws 키워드를 사용하여 호출자가 오류를 처리할 수 있도록 합니다. ..
함수를 구현하는 순서, 방식 (데이터 더보기) private func fetchAllPages(for section: Int, completion: @escaping ([AttractionItem]) -> Void) { var allItems: [AttractionItem] = [] var currentPage = 1 let maxPages = 10 let spotParameters: SpotPrameters switch section { case 0: spotParameters = .spaCollection case 1: spotParameters = .themaCollection case 2: spotParameters = .muse..
날짜와 시간을 특정형식의 문자열로 반환하는 코드 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..
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"이 출력됩니다.따라서, ..
compactMap - 새로운 배열 생성 compactMap은 Swift의 배열이나 컬렉션에서 사용되는 고차 함수로, 클로저를 적용하여 nil이 아닌 값만 필터링하고, 동시에 값을 변환하여 새로운 배열을 반환하는 기능을 제공합니다.  일반적인 map과 flatMap 함수와 달리, compactMap은 변환 과정에서 nil 값을 제거하는 역할을 합니다. 기본 문법let resultArray = array.compactMap { element in // 변환 및 필터링 작업}  compactMap 클로저 내부에서 nil을 반환하면 그 요소는 새로운 배열에서 제외되고, nil이 아닌 값만 결과 배열에 포함됩니다. 사용 예시1. Int 문자열 배열을 정수로 변환 숫자로 변환 가능한 문자열만 남기고 nil 값은 제거합니다.let stringArra..