[TIL / 25.03.28] 과제 5, 스택뷰가 보이지 않는 문제 해결
·
iOS/Swift
1. 메인 트러블슈팅버튼이 출력되지 않던 문제, configure 이전에 setupUI를 해주어 count가 넘어가지 않고 0인채로 렌더링하고 끝나는 줄 알았는데, 그렇다고 데이터가 후에 바인딩 되던게 여기서는 안될 리가 없었다. //// BookSeriesView.swift// HarryPotterBooks//// Created by 송규섭 on 3/28/25.//import UIKitclass BookSeriesView: UIView { private var seriesCount: Int = 0 private let stackView = UIStackView().then { $0.axis = .horizontal $0.spacing = 8// ..
[TIL / 25.03.27] HarryPotterBooks 과제 2~4Lv 구현 및 회고
·
iOS/Swift
1. 구현한 것2. 보완했던 사항들기본 구현보단 부분 부분 고쳤던 사항들을 기록한다. 먼저, 에러 핸들링에 대해서 좀 더 alert창에 친근하게 접근할 수 있도록 구조를 바꿨다.기존 loadBooks는 Result 타입을 반환했는데, 해당 방식으로 콜백을 하기보단 해당 throw 메서드로 변환하면서 [Book]으로 명시적으로 반환하도록 바꿨음.class DataService { func loadBooks() throws -> [Book] { guard let path = Bundle.main.path(forResource: "data", ofType: "json") else { throw DataError.fileNotFound } ..
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.25] 제목은 gitignore 트러블슈팅으로 하겠습니다,, 근데 이제 cherry-pick, rebase를 곁들인
·
Git, Github
정신 없이 고치고 문제 해석하느라 과정에선 스샷 없이 진행합니다.. 1. 상황 설명dev 브랜치 내에 각자의 디렉토리를 생성해두고 그 안에 각자 개인과제 풀이 프로젝트를 넣어야 하는 상황.이에 따라서 디렉토리의 depth가 커져 DS_Store 파일도 그만큼 많아져서 gitignore를 최상위에서 한꺼번에 관리하자는 결론이 나왔음. 다만, 이 gitignore 작업을 내 개인 브랜치에서 할 게 아니라 dev 브랜치에 최신 사항 위에 바로 올리고 푸쉬했어야 했는데, 내 개인 브랜치에서 작업을 진행함. 뭔가 나 혼자 했다면 다시 지우고 dev 브랜치로 가서 다시 만들었을 것 같은데, 역시 깃과 깃헙에 유능한 팀원분의 지도 하에 문제 해결을 해보도록 했습니다. 2. 문제 해결우선 해결 당시에는 정말 뇌가 너무..
[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 = (..
[WIL / 25.03.21] 3주차 회고, KPT
·
내일배움캠프
Keep 👍깃 컨벤션을 지키니까 커밋메세지를 한번에 파악할 수 있어서 이부분은 유지했으면 좋겠다.팀원들과 일주일에 두번씩 서로 공부한걸 공유하는 스터디를 진행하며 몰랐던 부분 또는 아는부분에 대한 개선이 이루어져 뜻깊은 시간이었다.서로의 코드를 리뷰하면서 상대방의 코드를 통해 알아가거나 내 코드의 개선점 등을 알게 되는 시간이라 유지되었으면 좋겠다.PR에서 팀원의 승인을 모두 받은 뒤 머지하는 방식을 통해 간단하게라도 협업에 대한 경험을 쌓을 수 있었다.의견을 공유할 때 서로 존중하면서 자유롭게 공유하는 점이 좋았다.Problem 👎하나의 레포지토리에 모든 팀원들의 프로젝트를 머지하면서 커밋히스토리가 복잡해졌었다.일과 시작 전에 그날 계획이나 공부할 것들 공유하는 데일리 스크럼 시간이 부족했던 것 같..
[Algorithm / 25.03.21] 달리기 경주
·
Algorithm
1. 문제 설명얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다.선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세요. 2. 문제 풀..
[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에 넣을 수 없는..
[Algorithm / 25.03.20] 카드 뭉치
·
Algorithm
1. 문제 설명코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다.원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다.한 번 사용한 카드는 다시 사용할 수 없습니다.카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다.기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다.예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"를 사용한 후 ..
[TIL / 25.03.19] playground, command line tool에서의 비동기 함수 (feat. escaping closure)
·
iOS/Swift
1. 오늘 무엇을 했으며 문제가 무엇인가,,,,,,오전부터 낮까지 알고리즘 문제 하나 붙잡고 있었다가 남는 시간에 무언가 몰두해서 하기 힘들어서 밀린 강의를 좀 들어두도록 했다.문제가 생긴 부분은 심화 단계에서의 클로저 실습. escaping closure(탈출 클로저)에 대한 실습인데 실행에 자꾸 문제가 있었다. 우선 탈출 클로저란 무엇인가?"탈출 클로저(@escaping)는 함수가 반환된 후에도 실행될 수 있는 클로저입니다. 즉, 클로저가 함수의 실행 범위(scope)를 '탈출'하여 함수 외부에서도 호출될 수 있습니다. 반면, 일반 클로저(비탈출 클로저)는 함수 내부에서만 실행되며 함수가 반환되기 전에 실행을 완료해야 합니다." 원래 클로저를 쓸 때 선언 시 함수 블럭 내에 쓰는데 만약 이 클로저가 ..