[25.08.14] MOUP 리팩토링 및 트러블슈팅 - 동적 높이를 가지는 테이블뷰 셀
·
iOS/Swift
이번엔 정말 한참 잡고 있었던 것 같은데 ...1. 리팩토링한 부분기존 홈 내 알바생이 본인의 근무지를 볼 수 있었고 셀을 탭하면 확장 및 축소가 되어 급여에 대한 상세한 요소들을 볼 수 있어야 했음요런 느낌으로 했어야 했는데 리뉴얼 전 프로젝트에서는 스택뷰로 하게 되면 계속 제약조건 경고와 함께 UI 관련 이슈가 끊이질 않고 원하는대로 되지도 않아서 데드라인이 얼마 남지 않았기에 해당 방식으로 진행함. func setConstraints() { containerView.snp.makeConstraints { $0.top.equalToSuperview().inset(4) $0.directionalHorizontalEdges.equalToSuperview..
[25.08.04] MOUP 트러블슈팅 - .xcconfig 내 url 설정 시 주의사항
·
iOS/Swift
1. 문제 상황구글 로그인을 위해 데이터 레이어를 모두 임시 구현해두고 테스트를 하는데 No endpoint 경고가 뜸NSLocalizedDescription=특정 호스트 이름을 가진 서버를 찾을 수 없습니다.분명 baseURL을 xcconfig에 넣고 이를 info.plist에 등록해서 가져다가 쓴건데...?라우터 패턴 내부에 var baseURL: URL { guard let url = URL(string: NetworkConstants.baseURL) else { fatalError("Invalid base URL") } print("baseURL은 \(url)입니다") return url }// 생략 ...func asUR..
[25.07.31] MOUP 트러블슈팅 - tableHeaderView 레이아웃 제약 경고
·
iOS/Swift
1. 문제 상황홈 화면 상단에 유동적이지 않은 뷰(헤더)를 리뉴얼 전 프로젝트에선 tableHeaderView로 해결해보려 했으나 제약 경고 해결을 시간 내로 빠르게 해결하지 못할 것 같아 섹션 헤더로 넣어 해결했다. 이번 리뉴얼 버전에선 이 헤더가 사실 화면 전체의 상단 영역을 책임 진다고 생각하여 tableHeaderView로 구현해보고 싶어 시도했으나 계속 제약 조건 경고가 뜸 내부적으로 leading, trailing에 대한 제약조건 16을 달아둔 것들이 문제가 됐고 마지막 사항은 HomeHeaderContainerView라는 헤더 뷰 자체가 width가 0이라서 문제가 된다고 한다.tableView.snp.makeConstraints { $0.top.equalTo(topBar..
객체지향 프로그래밍(OOP)의 주요 개념
·
면접 질문 정리
1. 객체지향 프로그래밍(OOP)객체지향 프로그래밍(OOP)은 객체 및 이들간의 관계, 상호작용 등을 기반으로 프로그램을 설계하는 방법론 및 프로그래밍 패러다임데이터를 중심으로, 해당 데이터를 처리하는 기능(메서드)를 하나의 단위(클래스)로 묶어 코드의 재사용성, 유지보수성, 확장성을 높이는 데에 목적이 있다. 2. 객체지향 프로그래밍(OOP)의 핵심 개념 4가지1. 추상화 (Abstraction)불필요한 세부사항은 숨기고, 핵심 개념만 모델링하는 것.메서드들이 어떻게 작동하는지 같은 디테일은 생략, 그 본질을 들여다보는 것.ex) 자동차 - start(), drive() 어떻게 drive가 이뤄지는지는 중요하지않음 2. 캡슐화 (Encapsulation)데이터와 데이터를 다루는 메서드를 하나의 클래스 ..
[모업 MOUP] 프로젝트 첫 출시 회고
·
회고
우선, 우여곡절이 많았지만 최종 프로젝트로 개발한 앱 MOUP이 앱스토어에 출시되었다.https://apps.apple.com/kr/app/moup-%EB%AA%A8%EC%9D%B4%EB%A9%B4-%EC%97%85%EC%9D%B4-%EB%90%9C%EB%8B%A4/id6747497191 ‎MOUP - 모이면 업이 된다‎모이면 업이 된다 — MOUP 알바생의 근무 시간, 날짜, 월급을 자동으로 계산하고, 루틴(체크리스트) 기능으로 업무를 더 쉽게 관리할 수 있는 앱입니다. 주요 기능 - 급여 계산 - 일정 관리 - 캘린apps.apple.com 앱 소개 및 나의 역할 위 섹션에서 볼 수 있듯 모업은 모이면 업이 된다 라는 슬로건을 가지는 앱이다. 알바생이 근무 시간, 날짜, 월급을 입력하고 근무를 등록하..
[25.06.24] MOUP 트러블슈팅 - Listener와 Rx의 timeout
·
iOS/Swift
1. 문제 상황홈 내 테이블뷰에 들어갈 데이터를 불러오는 과정에서 combineLatest를 호출한다.extension HomeViewController: UITableViewDelegate { func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { guard let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: HomeHeaderView.identifier) as? HomeHeaderView else { return UIView() } Observable...
[TIL / 25.05.27] 날씨 앱 main 페이지 구조 트러블슈팅
·
iOS/Swift
1. 문제 상황현재 기획 상 위 아래로 한페이지씩 pageable하게 구현함. mainPageViewController(UIPageViewController) 하위 뷰컨트롤러들에 위 아랫 UIViewController를 연결해둠.근데 첫번째 페이지에서 화면을 아래로 잡아끌면 새로고침이 되어야함. PTR(Pull To Refresh)가 필요한데,, 문제의 현 구조. 대충 구조만 보고 넘겨주세요class MainPageViewController: UIPageViewController { private let disposeBag = DisposeBag() private let viewModel: PageViewModel private let mainViewModel: MainViewModel ..
[TIL / 25.05.18] 의존성 주입 담당 DIContainer를 처음 적용해보았습니다
·
iOS/Swift
DIContainer란?앱의 각 객체들이 어떻게 구성되고 주입될지 정의해주는 중앙 조립소.UseCase, Repository, ViewModel, ViewController와 같은 컴포넌트들을 하나의 컨테이너에서 만들어주기 때문에, 객체 간의 생성 책임을 분리하고 코드 가독성을 높이는 데 도움이 된다. - 객체 간 생성 책임 분리란?누가 누구를 만들지 결정하는 책임을 명확히 나누는 것임. class MainViewController: UIViewController { private let viewModel = MainViewModel( searchUseCase: SearchBooksUseCase( repository: BookRepository(networkServi..
[TIL / 25.05.13] BookSearchApp Lv 3 트러블슈팅 - Core Data 크래시
·
iOS/Swift
시간이 많이 없어 주 정보원은 GPT와의 스무고개뿐이라, 이중 검증이 아직 덜 된 부분이 많구요..!제가 생각하기에 확실하지는 않지만 "이게 맞는 것 같다"싶은 부분들로 글을 쓰겠습니다. 1. Persistent Store 초기화 전 Entity(context:) 사용 시 크래시 발생An NSManagedObject of class ‘BookEntity’ must have a valid NSEntityDescription.이 메시지와 함께 crash가 났는데담기 버튼을 누르면 코어 데이터에 CartBookEntity를 저장하는 로직을 실행하도록 하는 과정에서 문제가 생겼다.관련 코드를 보며 아직 코어 데이터 생태계에 아무것도 몰라서 찾아봐도 무슨 말인지 모르겠고 gpt랑 스무고개를 진행했다. "persi..
[TIL / 25.05.12] BookSearchApp 트러블슈팅 - 일부 배경색이 투명한 현상
·
iOS/Swift
문제 상황 및 도출요구 사항 맞춰서 16 pro 시뮬레이터 기준으로 작업 중이었고 분명 이 기기에선 제대로 떴는데이렇게 오늘 작업이 끝나는구나..인줄 알았습니다.웬 걸? 16.0버전 SE 2세대를 기준으로 돌리니 상단 서치바 영역이 까맣게 아무것도 안뜨는 현상이 발생했습니다. 자 문제 파악을 위해 각 시뮬레이터 두 환경에서 뷰 디버거를 키면 어떻게 보일지 봤는데 아니 글쎄 뒷 배경 UITabBar에 iOS 18 버전 시뮬레이터에선 배경 색이 자동으로 있는채로 렌더링되고, 16버전에선 그냥 clear하더라구요.. 이게 과연 os 버전 차이로 인한 게 맞는지 좀 더 검증해보기로 합니다. 제 폰이 13 프로라서 일단 13 시리즈를 기준으로 잡아봤읍니다.좌측은 13 프론데 iOS 16.0을, 우측은 13 미..