일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Git
- composablearchitecture
- swiftdata
- IOS
- uikit
- concurrency
- UI
- test
- xcode
- navigationsplitview
- 개발
- 모바일
- github
- SWIFT
- Navigation
- Tuist
- combine
- SWIFTUI
- network
- regex
- TCA
- ObjC
- iOS 13.0+
- xcodecloud
- 정규표현식
- tuist #xcodecloud #ios #ci/cd #swiftlint #firebase
- Alamofire
- iOS 개발자
- ios18
- Firebase
- Today
- Total
목록분류 전체보기 (71)
iOS 개발 기록
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/PflyC/btrDywn4AUT/Fyc5C5ZTqZK5sXTcsZKwK0/img.png)
MVC 패턴과 MVVM패턴이란? 화면에 보여주는 프레젠트 로직과 실제 데이터가 처리되는 비지니스 로직을 분리하여 새로운 기능의 개발이나 유지보수에 용이하도록 사용하는 것을 목적에 둔다. MVC 정의 : Model(애플리케이션의 정보), View(사용자 인터페이스), Controller(데이터와 비즈니스 로직 사이의 상호 동작을 관리)의 약자. Model Model은 Data와 애플리케이션이 무엇을 할 것인지를 정의하는 부분으로 내부 비즈니스 로직을 처리하기 위한 역할을 한다. 모델은 컨트롤러가 호출을 하면 DB와 연동하여 사용자의 입출력 데이터를 다루는 일과 같은 데이터와 연관된 비즈니스 로직을 처리하는 역할. 데이터 추출, 저장, 삭제, 업데이트 등의 역할을 수행. Mode의 규칙 사용자가 편집하기를 ..
1. Storyboard 정의 : 여러 애플리케이션 뷰들의 전환을 레이아웃 하기 위한 방법, Storyboard 사용 유무 설명 사용할 때 - 다수의 서로 연결된 뷰 컨트롤러의 이동할 때에 경우, 네비게이션의 흐름(pop, push, present, dismiss 등)을 쉽게 해줌 - 뷰 컨트롤러가 자동으로 생성되므로 alloc이나 init을 해줄 필요 없음 - 테이블 뷰 컨트롤러의 이점으로는, 셀을 함께 디자인해서 테이블뷰와 함께 둘 수 있으며 여러 형태의 셀 템플릿을 디자인할 수 있음 사용하지 않을 때 - 복잡한 레이아웃을 가진 뷰일 경우 (코드 추천) - 뷰가 이미 XIB이나 코드로 개발 되어 있을 때 장점 / 단점 설명 장점 - 성능 : 퍼포먼스로는, 최초 뷰컨트롤러 하나만 생성된 후 나머지 연결..
Auto Layout의 장단점은? 1. auto layout의 정의 : 제약조건(Constraints)을 이용해서 뷰의 위치를 지정하는 것. 다시 말하면 두 뷰의 사이의 관계를 제약 조건을 이용해 뷰의 크기와 위치를 지정하는 것. 여러 해상도를 지원하기 위해 나옴. 2. frame layout과의 비교 Frame Layout Auto Layout 방법 전통적인 방식. 각 View의 크기와 위치를 계산해 배치. 변경이 발생하면 모든 뷰의 프레임을 다시 계산. 뷰의 관계(제약조건)을 이용하여 표현. 제약조건을 기반으로 크기와 위치 계산. 장점 어떤 변화가 생겨도 대응할 수 있음. 단점 모든 변경 사항을 직접 관리해야하기 때문에 에너지가 많이 필요. 디버그, 유지 관리까지.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/KkpjB/btrCHDmqbQ5/VaYf21edMJnuyrk7eKufw1/img.png)
[ D-day 앱 ] SwiftUI, MVVM, Realm [ Recruit 리스트 뷰 : 이름, 날짜, 요일, apply 체크 버튼 -> 날짜 순서대로 정렬 ] 이전까지 구현한 내용 : 리스트 뷰, 날짜 순서대로 정렬 터치시 웹뷰 띄우기 : WebKit 으로 Link URL 띄우는 걸로 구현 네비게이션 링크로 서브 뷰로 들어갔을 때에 탭바 안뜨게 하기 Apply 값에 따라 리스트 정렬하여 보여주기. 채용 일정 수정 및 삭제와 복구 구현 날짜 지나면 자동으로 정리 [ 오늘 구현한 내용 ] 수정한 내역 - 1. 탭에 따라 네비게이션 아이템이 변경되지 않던 것 수정 Recruit 탭을 다 구현하고 TodoList 항목을 구현하려는데 문제가 생겼다. 다른 뷰의 탭으로 바꿨는데 네비게이션 아이템이 여전히 유지되..
파일 및 커밋 추가 git status · 변경 사항 확인 git add "(파일 이름)" // 변경된 모든 파일을 담을 경우 git add . · 변경된 파일 하나 담기. · 모든 파일 담기 git commit -m "(커밋 메세지)" // vi로 커밋을 편집할 경우 git commit // 커밋 내용 확인 git commit log // add와 commit을 한번에 할 경우 git commit -am "(메세지)" // 마지막 commit 취소 git reset HEAD^ · add와 commit을 한번에 하는 경우는 새로 추가된 파일이 없을 때 한정 버전 되돌리기 (reset, revert) // 커밋 내역 확인 git log //돌아갈 특정 버전이 있는 경우 git reset --hard (돌아..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/vzmFi/btrBYDnEm5z/YEvzAUriZ5slLEU5QuOQJ1/img.png)
[ D-day 앱 ] SwiftUI, MVVM, Realm [ Recruit 리스트 뷰 : 이름, 날짜, 요일, apply 체크 버튼 -> 날짜 순서대로 정렬 ] 어제까지 구현한 내용 : 리스트 뷰, 날짜 순서대로 정렬 터치시 웹뷰 띄우기 : WebKit 으로 Link URL 띄우는 걸로 구현 [ 오늘 구현한 내용 ] 수정한 내역 - 1. 네비게이션 링크로 세부 뷰로 들어갔을 때에 탭바가 뜨던거 안뜨게 수정함 -> 네비게이션과 탭 뷰의 관계에 대해 다시 배움 ... 구현한 내용 - 1. Apply 체크, Apply 지원 목록 리스트 보기 Apply 텍스트를 누르면 @ObservedRealmObject로 ViewModel의 Apply 의 Bool값을 토글한다. ViewModel의 바뀐 값을 @Observe..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/HY7aT/btrBVA4zmh7/ucYPflwwnhOEZwryuBTTK1/img.png)
[ D-day List ] [ Recruit 리스트 뷰 : 이름, 날짜, 요일, apply 체크 버튼 -> 날짜 순서대로 정렬 ] 구현 완료 리스트 뷰, 날짜 순서대로 정렬 : Realm의 @ObservedResults 을 통해 DB가 변화하면 D-dayt순으로 정렬된 채용일정 View를 그린다. D-day가 3일 이하인 경우, 날에 따라 View의 색을 바꾼다. 터치시 웹뷰 띄우기 : WebKit 으로 Link URL 띄우는 걸로 구현 수정 예정 - 탭바 색깔 ... 왜 안바뀌지? 구현 예정 - Apply 체크 버튼, 날짜 지나면 자동으로 정리, 채용 일정 수정 및 삭제 , 지원한 기업과 못한 기업 리스트 보기. [ 일정 추가 : 날짜, 이름, 링크 ] 구현 완료 일정 추가 기능 : 기업 이름, 채용 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/ckjhOK/btrBMFTZ4SV/baSbF1gQ8k0k1A1sisjs30/img.png)
바탕화면에 기업 채용 일정들을 메모장에 올려두고 확인하고 있는데 지저분해보인다는 느낌을 많이 받았다. 그래서 간단하게 앱으로 만들어서 채용 일정들을 등록해서 확인하는 앱을 만들어 보려고 한다. +) 덤으로 하루에 진행한 내용들을 정리할 수 있는 기능도 추가해보려고 한다. 필요 기능 채용일정 일정 추가 : 날짜, 이름, 링크 메모 리스트 뷰 : 이름, 날짜, 요일, D-day, 링크 웹뷰, 체크 -> 날짜 순서대로 정렬, 날짜 지나면 따로 정리 이미 지난 일정 뷰 삭제 Todo list 일정 추가 : 분류, 이름 일정 뷰 : 날짜 자동 기록, 분류별, 이름, 체크 -> 꾹 눌러서 다음날로 미루기 날짜별 이룬 항목 확인 삭제 확인 오후 10시, 총 평 기록하도록 알림 사용 라이브러리 combine, real..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/dZNW2b/btrBLFsWECb/HmPTSkZrrQjfzVkHUceBBk/img.png)
문제 설명 알고리즘 풀이에 사용한 알고리즘의 의사코드. n의 범위가 1 이상, 10 이하이기 때문에 차량 시간대 별로 인원을 정리해두면 반복문을 10번만 돌려도 값을 구할 수 있었다. 첫번째 코드 import Foundation func solution(_ n:Int, _ t:Int, _ m:Int, _ timetable:[String]) -> String { // 1. 차량 구하기 var busTime = [Date]() for i in 1...n { busTime.append(busTimeTable(i, t)) } // -> 막차보다 늦는 인원 자르고 계산 var times = [Date]() timetable.forEach { if busTime.last! >= convertDate($0) { ti..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cOS4u4/btrA329nC24/87DxbsgeZqiX4V31RDBIJ1/img.png)
앱을 개발하다가 밀린 커밋을 Github에 푸쉬하려는데 다음과 같은 에러가 떳다. Github에는 파일 용량이 50MB 이하이기를 권장한다. 따라서 해당 에러에서는 2가지를 확인할 수 있다. 1. 50MB 이상인 경우 Warning를 표시한다. 2. 100MB 이상인 경우 Error처리 후 원격 저장소에 푸쉬가 안된다. 확인해보니 CocoaPods를 통해 설치했던 Realm에 있는 시뮬레이터의 파일에서 용량을 초과한 것 같았다. 해당 파일을 삭제해도 문제가 될 것 같지는 않았다. 그런데 나중에 사용하는 파일이 용량을 초과할 경우 어떻게 해결할지 미리 공부할 겸 찾아보았다. 해당 문제에는 크게 git-lfs를 사용하는 방법과 BFG Repo-Cleaner를 사용하는 방법이 있었다. Git-LFS 1. 원..