HarryPotterBooks 과제 1레벨 기록
·
iOS/Swift
1. 구현해야 할 것2. 문제 해결import Foundationimport UIKitstruct BookResponse: Decodable { let data: [Book]}struct Book: Decodable { let attributes: Attributes}struct Attributes: Decodable { let title: String let author: String let pages: Int let release_date: String let dedication: String let summary: String let wiki: String let chapters: [Title]}struct Title: Decodable { ..
[TIL / 25.03.24] UIKit No Storyboard 초기 세팅
·
iOS/Swift
스토리보드 없이 코드 베이스로 UI를 구현하게 된다면 어떻게 세팅할지 알아보자 ! 1. main.storyboard 삭제move to trash 해줘야함 ! 2. 프로젝트 설정 - Build Settings - main 검색하면 나오는 UIKit Main storyboard File Base Name 백스페이스로 제거 3. 파일 중 Info.plist에서 해당 항목도 백스페이스로 제거 4. SceneDelegate 내에 코드 수정func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (..
[TIL / 25.03.20] 최적화(OptimizationTips) 2
·
iOS/Swift
1. Swift 컨테이너 타입을 효율적으로 사용하는 방법Array에서 값 타입 사용하기Swift에서 타입은 두 가지 카테고리로 나눌 수 있습니다. 값 타입과 참조 타입.값 타입은 struct, enum, tuple이 있고, 참조 타입은 class가 있는데, 값 타입의 경우 NSArray 내부에 포함될 수 없습니다.여기서 NSArray가 무엇인가? NSArray는 Objective-C에서 사용되는 불변(Immutable) 배열 클래스라고 합니다. 스위프트에선 옵젝씨와의 브릿징을 통해 사용할 수 있다고 합니다. 오직 객체(참조 타입)만 저장 가능합니다. Swift의 Array는 내부적으로 때로는 Objective-C의 NSArray와 호환되어야 한다고 합니다. 다만, 값 타입은 NSArray에 넣을 수 없는..
[TIL / 25.03.19] playground, command line tool에서의 비동기 함수 (feat. escaping closure)
·
iOS/Swift
1. 오늘 무엇을 했으며 문제가 무엇인가,,,,,,오전부터 낮까지 알고리즘 문제 하나 붙잡고 있었다가 남는 시간에 무언가 몰두해서 하기 힘들어서 밀린 강의를 좀 들어두도록 했다.문제가 생긴 부분은 심화 단계에서의 클로저 실습. escaping closure(탈출 클로저)에 대한 실습인데 실행에 자꾸 문제가 있었다. 우선 탈출 클로저란 무엇인가?"탈출 클로저(@escaping)는 함수가 반환된 후에도 실행될 수 있는 클로저입니다. 즉, 클로저가 함수의 실행 범위(scope)를 '탈출'하여 함수 외부에서도 호출될 수 있습니다. 반면, 일반 클로저(비탈출 클로저)는 함수 내부에서만 실행되며 함수가 반환되기 전에 실행을 완료해야 합니다." 원래 클로저를 쓸 때 선언 시 함수 블럭 내에 쓰는데 만약 이 클로저가 ..
[TIL / 25.03.18] 최적화(OptimizationTips) 1
·
iOS/Swift
Private, public 의 쓰임새에 대해서 좀 더 고민하다가 같이 고민하던 분들과 같이 튜터님께 갔는데 최적화 관련 정보가 있는 링크를 받아 해석해보기로 했읍니다,,,,,  1. Whole Module Optimizations (WMO)기본적으로 Swift는 각 파일을 개별적으로 컴파일한다고 합니다. 이를 통해 Xcode는 여러 파일을 매우 빠르게 병렬로 컴파일할 수 있는데, 단 각 파일을 개별적으로 컴파일하게 되면 특정 컴파일러 최적화를 방지할 수 있다고 합니다. (일부 최적화를 하는 데에 방해가 된다는 느낌인듯?) 이때 파일 단위로 컴파일하지 않고 모든 파일을 하나의 단위로 컴파일하는게 WMO라고 합니다.단, 컴파일 시간이 기본모드보다 느린 점이 있지만 그만큼 최적화에 장점이 있는데 이 최적화도..
[TIL / 25.03.17] Array.compactMap (feat. 문법 심화 과제)
·
iOS/Swift
문제에서 요구사항이 "함수 c 에 Numbers 프로토콜 요소를 가진 배열만 사용할 수 있는 함수 d 를 작성해주세요."였다. 엥? 배열 내 요소에 프로토콜 준수를 시킨다는건 대충 알겠지만 뭐 어떤 내용에 대한 준수를 하도록 할 것이며... 등등 의문이 좀 있었는데 어쨋든 구현을 해보기로 한다. import Foundationprotocol Numbers { var intValue: Int? { get }}class ThirdQuestion { func removeEvenNum(_ array: [Int]) -> [Int] { var result: [Int] = [] for i in 1...array.count { // 홀수 요소..
[TIL / 25.03.13] 의존성 주입 (Dependency Injection)
·
iOS/Swift
1. 의존성 주입, 왜 할까?개발을 하다 보면 코드 간의 의존성 문제로 인해 유지보수가 어려워지는 경우가 많습니다.객체간에 강하게 참조를 할 경우나,, 어느 객체에서 한 객체를 직접 내부에서 인스턴스화해 쓰는 경우 쓰이던 객체가 만약 문제가 생긴다면?그 문제는 그 객체만 해결해줄 게 아니라 그걸 직접 만들어 쓰고 있던 객체 측에서도 수정해줘야 합니다..!!이렇게 한 객체가 타 객체에게 의존을 하게 되어 생기는 문제를 해결할 수 있도록 의존성 주입을 해줍니다 2. 의존성 주입은 어떻게 하나? 그리고 장점은?class Guitar { func play() { print("대..충.. 기타치는 소리...") }}class Artist { var guitar = Guitar() ..
[TIL / 25.03.12] Alamofire Interceptor에 관한 문제 해결
·
iOS/Swift
1. 겪었던 문제메서드마다 interceptor 인스턴스를 넣어주면서 토큰 관련 인증을 알아서 하도록 설정을 해두었는데, 이상하게 토큰 관련 에러가 지속됐다. (토큰이 만료되었습니다.........)Task { do { let response = try await AF.request(AuthRouter.refreshToken(refreshRequest)) .serializingDecodable(AuthTokenResponse.self) .value // 새로운 토큰 저장 KeychainHelper.shared...
[TIL / 25.03.11] 에러 핸들링(Error Handling)
·
iOS/Swift
swift.org의 에러 핸들링 파트를 보고 클로드랑 같이 병행해서 개념을 익히고 정리해보았읍니다 https://docs.swift.org/swift-book/documentation/the-swift-programming-language/errorhandling#Converting-Errors-to-Optional-Values1. Error Handling에러 핸들링(Error Handling)은 프로그램 실행 중 발생할 수 있는 오류를 감지하고, 이를 적절히 처리하여 정상적인 흐름을 유지하는 과정 예를 들어, 네트워크 메서드를 처리해줌에 있어 발생할 수 있는 오류로 토큰 만료로 인한 인증 오류,, 요청 보낼 당시의 파라미터의 부재,,, 등등 많음. 요렇게 일어날 수 있는 에러들에 있어 어떻게 처리해주..
[TIL / 25.03.05] 이미지 슬라이더 + 커스텀 인디케이터
·
iOS/Swift
1. 구현한 것 어느 팀원을 선택하면 해당 팀원의 상세 페이지를 보여주는 화면을 제작하도록 했다.해당 뷰에서 필요한 기술이 뭐가 있을지 만들기 전 생각해봤는데 1. 이미지 슬라이더 2. 그에 맞는 인디케이터 3. 칩 모양은 컬렉션뷰로 4. 화면 크기 생각해서 일부만 스크롤뷰로 구현이정도를 해야했고, 이 포스트에선 가장 애먹었던 부분인 커스텀 슬라이더와 인디케이터에 대해 다루겠다. 이미지 슬라이더 자체는 컨셉이 컬렉션뷰고 화면 꽉채우고 페이지 가능하게 해야 하는 부분이라 썩 어렵지만은 않아서 일단 패스하고, 저 상단에 인디케이터는 보통 라이브러리나 기본 제공되는 형태가 점(dot)으로 되어있기에 커스텀할 필요가 있었다. 2. 구현 내용우선 이런 커스텀 뷰 자체를 직접 만드는 능력이 아직 부족해 클로드에게 ..