Validation (1)
SwiftUI 프로젝트 구조화: Screen과 View의 분리
SwiftUI View의 본질: View는 이미 ViewModel이다
iOS 17 이전 환경에서의 Nested Observable 문제 해결 (View Composition)
중첩된 Observable 객체의 한계와 Observation 프레임워크의 해결
Aggregate Model: Bounded Context를 활용한 대규모 앱 설계
커피 주문 앱의 기존 MVVM 코드 분석
MVVM의 기원: Presentation Model (by Martin Fowler)
SelectBooksView에서 VM 연결하기
In-App 결제 기능 구현
강의에 있던 내용을 정리한다.
Next Level 버튼 애니메이션 추가
이번글은 좀 중간에 끊기가 애매해서 내용이 좀 길어질 것 같다.
GamePlayView
Game Logic
Change Book Status
GitHub 블로그 글을 작성할 때, 이미지 링크 뒤에 { width="50%" height="50%" } 같은 속성을 반복적으로 붙이는 작업을 자동화한다.
Books & Questions
Single Responsibility Principle
Custom Animations
Audio
📁 Folder vs Group (Xcode)
Predicate 수정
SwiftData 사용하기
Appgroup
Widget UI Design
WidgetKit으로 홈 화면에 포켓몬 위젯 표시하기
Offline에서도 이미지가 보이도록 만들기
능력치 데이터를 다루기 위한 모델 확장
PokemonDetailView
앱 실행 시 데이터 자동 로드
Fetch
이전 글에서 모델 구조와 CodingKeys를 정리했으니, 이번에는 직접 init에서 decoding을 더 자세히 알아본다.
CoreData로 부터 Fetch
Version 2로 업그레이드
Version 2로 업그레이드
Button에 Fetch 기능 적용하기
실제 값을 가져오는 함수 만들기
이번 내용도 아는건 최대한 간략하게 하고 과정을 적어본다.
iMessage를 위한 Sticker 만들어보기.
Map View 사용하기
ui 보완
Detail View 만들기
filter 부분 수정 및 sort 추가
Navigation Stack 사용 이제는 Navigation Stack을 사용하여 각 공룡에 대한 cell을 탭했을때 다음 화면으로 넘어가게 해보자
새로운 프로젝트를 시작해본다.
modifier 정리 및 추가 문제 수정
Grid 부분 별도로 추출
해당 강의를 잊고 있다가 마무리를 짓기 위해 작성한다.
오래간만에 업로드
LocationDetailView 기능 추가하기
LoadingView 만들기
Record 값 가져오기
Profile Validation
Profile 설정 화면 보강하기
Combine을 사용한 날씨 앱 만들기.
Alert 만들기
Container??
이번엔 MapKit, CloudKit을 활용한 지도앱을 만들어본다.
Http Client
CustomSubject
Combine을 UIKit에서만 사용해봤었는데, SwiftUI에서도 적용을 해보려한다.
iOS 18 적용
Code Comments
Accessibility(손쉬운사용) 사용하기
Optimizing
코드 리팩토링
코드 리팩토링
Chart Drag시 Haptic 기능 추가.
HealthData 추가하기
Weight Average Chart
Weight Chart
ChartView 분리
Charts 사용하기.
Simulator에서 MockData가 필요한 이유
HealthKit Permission 요청하기
HealthKit을 사용한 앱을 만드는 걸 공부하면서 기록을 적어본다.
UI 디자인
BasketballSim 이라는 앱으로 Dynamic Island & LiveActivity를 구현하려고 한다.
LockScreen Widget 적용하기
Concurrency & Tinted 적용 (iOS 18)
CoreData to SwiftData (iOS 17)
Widget 적용 기본적인 UI도 진행이 되었으니 이젠 Widget 설정을 해본다.
App Group 적용하기
Calendar에 TapGesture 추가
이번에는 Coredata를 연동한 Calendar 위젯을 만들어보려고한다.
이전에는 git address를 enum을 통해 정해진 주소만 사용해서 적용을 했다면 이제는 주소를 추가하여 원하는 Repository를 확인 하도록 만들어 보려고 한다.
App intents?
WidgetBundle 만들기
UI Design
Dynamic Month 적용
마지막 글이되겠다.
시나리오: 간단한 숫자 증가 앱
Bank Account Playground 만들기
Async Sequence를 지원하는 API
AsyncSeqeunce
Concurrent Tasks
Structured Concurrency ?
이제 공부한 내용을 새로운 프로젝트를 통해 적용해보도록 한다.
Async/Await
MVVM 디자인 패턴 적용하기
이번 섹션은 MVVM에 대한 내용을 다루는듯 하다.
Async/Await를 사용하여 날짜 가져오기
1. Concurrency ?
1. CoreData
1. DetailView
UI 구성
1. 파이널 프로젝트 - 지도 기능 리마인드
이전에 개인과제를 하면서 또는 마지막 프로젝트를 하면서 튜터님께 들었던건 의존성 주입(Dependency Injection)을 해보는게 어떻겠냐? 라는 것이었다.
어제 @ObservableObject, @StateObject와 관련된 글을 작성하면서 뭔가 테스트를 해보고싶어서 간단한 앱을 하나 만들어보려한다.
@ObservedObject vs @StateObject 이부분은 좀 더 자세히 알아봐야할것같아서 이렇게 새롭게 글을 작성한다
Api 적용하기
회고중 있었던일 정리
json 적용하기
DetailView 꾸미기 & PageView 꾸미기
DetailView 꾸미기
이번엔 그냥 간단하게 관광지 소개 앱을 만들어 보려고 한다.
수정기능 마무리
수정 기능 추가하기
CellView 적용하기
1. Lv 2. Todo 추가 및 완료기능 구현하기
이전에 사용하던 UIKit이 아닌 SwiftUI를 사용하여 ToDoList를 만들어 본다.
APIResponse를 UIModel에 파싱하기
FileManager Extension 구성하기
Tap 이벤트를 VC로 전달하기
다른 Course Swimlane을 추가
CategoryTextHeader 추가
이전에 Background Color를 Green으로 했던걸 지워준다.
MainBannerCollectionViewCell 추가하기
1. 기본 세팅
Info Button 기능 추가하기
Info View 디자인하기
Info Button 추가하기
VHZStack
TabView를 사용하여 모두 가져오기
차트를 구현해보려한다.
차트를 구현해보려한다.
MapView 파일을 하나 만들어준다.
EmptyFile을 하나 만들어주고 이름을 Place.swift로 해주었다.
struct ScrollImage: View { let image: String var body: some View { Image(image) .resizable() .scaledToFit() ...
SwiftUI의 구성
HackerNews API를 사용하여 앱 만들기.
Dicee App 만들기
Personal Business Card App 만들기
SwiftUI란?
프로젝트 종료 전 마지막 5일간 작업 요약 GitHub 계정이 일시적으로 정지된 영향으로 해당 기간의 커밋 내역이나 파일 변경 이력이 남아 있지 않음. 따라서 당시 직접 기록해둔 기능 구현 리스트를 바탕으로 기능 구현 및 수정 내역을 요약함.
나의 지역을 제일 상단에 올리는 기능 구현
게스트 모드 Alert 수정
프로필 수정에서 닉네임 중복 확인
신고기능 예외처리
커뮤니티 지도 첨부
리뷰 상세 페이지 이미지 확대 기능 추가
내용이 많아 이어서 작성…
내용이 많아 최대한 심플하게 작성을 한다…
회원 탈퇴시 재인증 문제 해결
Apple 로그인 개선
신고기능
Custom TextField 설정
신고 기능 구현
코드 리팩토링
Cell 의존성 주입
ManageVC 만들기
이미지 업로드 TS
Extension을 사용한 Alert 구현
로그인 상태에따라 다른 페이지 보여주기.
내가쓴 리뷰를 확인 할 수 있는 기능 구현
리뷰 작성글을 보여지게 구현
user 검색
Chat 기능 구현
현재 로그인 된 유져의 프로필사진과 프로필 명 변경.
라이브러리 설치
파이널 프로젝트에서 우리가 사용할 필요 기술이 하나 있어서 준비할겸 적어본다.
Kakao Firebase 연동
Social Login with Firebase
Social Login
Social Login
nextbutton 구현
어제 구현했던게 튜터님에게 피드백을 받으면서, 나도 그렇고 팀원들도 그렇고 튜터님의 한가지 질문에 아무도 대답을 하지 못한게 있었다.
이틀간의 회의, 대략적인 와이어프레임 구성이 끝났다.
여기부분은 강의에서도 그냥 타이핑만 하고 파일을 제공해주므로 각 function에 대해서 적어본다.
Save 버튼 구현
ProgressView 추가
멀티 채널 영상 녹화
게시글 등록 VC 만들기
생각해보니 모의 면접 질문에 대해 답을 한다는걸 까먹어서 정리한다.
2주간의 프로젝트 끝.
iCloud에서 데이터 가져왔을때의 문제 해결
예외처리
예외처리
예외처리
TabBar controller 생성
게임을 클릭하면 ModalView가 떠오르고
Storage Service 구현
Textfield 유효 함수 구현
Apple Login 구현.
이미지 업로드
틱톡 클론 앱 과정을 정리해본다.
Anchor?
게임 정답처리와 재시작할때 UI가 reset이 되도록 구현을 해야한다.
4일차 시작.
3일차 시작
2일차 시작 우선 중요기능중 한가지를 먼저 구현하려고한다
새로운 팀프로젝트가 시작
didSelectPublisher 사용.
Computed Property
Datasource에서 DiffableDatasource로 변경하면서 생긴 Exception이 있다.
예외처리도 끝났고, 남은건 내가 원래 과제에서 제출하고자 했던
우선 과제제출은 끝났다.
이제 무한스크롤만하면 할건 다했다, 그리고 VM에서 alert 구현하면 끝날것같다.
현재 디자인도 개판이고, 전체 삭제, 추가버튼도 이제 실행이 되게 해야한다.
CollectionView에 적용.
상세페이지 돌아가기 버튼 구현
코드 리팩토링
이제 진짜 문제의 시작.
이번에도 과제가 주어졌다.
UI Test
Add image Snapshot test
Unit Test 세팅
결과를 Result View에 출력
TipInputView publisher 생성
컴바인을 사용하여 Calculator ViewModel 만들기
컴바인에 대해 공부를 해야할 필요성을 느껴 공부를 하게 되었는데, Udemy 공부를 하면서 코드의 흐름은 파악이 되지만 정확하게 어떤 의미로 작동하는지를 확실하게 하기 위해 여기에 적는다.
코드를 통해 이해해보기. 2탄
코드를 통해 이해해보기.
Input View 디자인
Warning 해결
이제는 Combine, RxSwift에 대한 이야기도 나와서 슬슬 준비를 해야겠다는 생각이 들어 글을 써본다.
일주일간의 팀프로젝트가 끝났다. 개인후기는 지난번 글에 적었고, 튜터님의 리뷰를 여기에 적어본다.
최종점검
관리자 페이지 구현.
Test용 Dummy Data생성
프로젝트 4일차다.
프로젝트 3일차 각 팀원분들이 올려준걸 머지를 어떻게 하는지 알려주고나니 슬슬 틀이 잡혀지는게 보인다.
Kakao Map API V2를 사용하려 했으나,
일주일간 새로운 팀프로젝트가 시작된다.
playground를 통한 자연어 처리 Model 생성
CreateML
iOS 숙련 개인과제 Form 작성.
기본 코드 구성.
PIP 설치확인
CoreML
In App 결제
UINavigation Bar 수정하기
Cell에 Color추가하기
SuperClass로 추가 기능 관리.
Query 작성하기.
TodoList VC
Realm 사용해보기.
가끔 여러 사이트를 보며 참고를 할때 변수 앞에 lazy가 붙는 경우가 종종 있다.
FeedBack 내용
근래 Concurrency에 관심이 많이 생겨서 이것저것 자료를 찾다가, 강의라도 있으면 좋겠다는 생각이었는데, 구글링을 하다 발견하여 바로 결제를 해버렸다.
DB인식 문제 해결하기.
기존에는 API에서 값을 전달할때 Protocol을 사용하여 VC로 값을 넘겼는데,
중복처리
Lv.5
Lv.4
CoreData 사용하기
API로 부터 값 가져오기.
이번에도 약 2주의 시간이 주어지며,
심화내용 시작이다.
프로젝트가 끝이났다.
KPT
5일차다 처음에는 백지였던 그림이 시간을 지나 점점 뚜렷하게 보이기 시작한다.
4일차가 시작이 되었다.
3일차가 시작되었다. 머지 문제가 해결이 되어 새로 프로젝트를 클론하여 시작한다.
이글을 작성할때는 merge 문제가 이미 해결이 되었던 부분이라 사진이 많이 없어서 회상하는 식으로 작성한다.
Token 적용해보기.
프로젝트가 시작되었다.
계속 해보려고한다.
StoryBoard 파일 제거
Repository 내용 TableView에 업로드하기
과제소개
Lv.4
Lv.4
이번글은 참고자료를 위주로 따라한것밖에 없는듯 하다.
이미지 업로드할때, 꼭 필요한 기능이라 정리 할겸 적어보기로 한다.
Lv4
Query 사용하기.
CoreData 사용해보기.
UserDefault 사용하기
TableView 만드는것은 생략.
TextField 입력시 키보드가 가리는것 방지하기.
Lv4
Lv4
약간 번외 편으로 저번과 마찬가지로 클래스화를 해야할 필요성을 느껴서
그전까지는 이렇게까지 복기를 하지는 않았는데, 이제는 실제로 UIKit도 다루다 보니.
Lv3 Todo 삭제 기능 구현하기 키워드 : UITableView, UIButton
이건 나중에 하려고했던건데, reloadData가 이상한것 같아서
Firestore 사용해보기
Cell Customizing
이번주차 과제를 진행하다보니 UIAlertController에 대해 사용하는 부분이 있어서
Lv.2
이번 주차 과제는 2주의 시간이 주어지며
1. UISlider 값의 범위를 가지고 사용자가 원하는 값을 선택할 수 있는 UI 요소 value : 슬라이더의 현재 값을 나타낸다. minimumValue : 슬라이더의 최소값을 설정. maximumValue : 슬라이더의 최대값을...
상수 파일 생성하여 한 파일에서 관리하기.
회원가입 구현
3rd party Library 실제로 사용해보기.
Cocoapods 설치하기 (Terminal)
우연히 유튜브를 보다가 Coordinator Design Pattern 이라는 제목의 영상을 보게 되었다.
VC 구성
UIView Component
1. Intro
Constants(상수) 변수(Variables)와 달리 값이 변하지 않는다.
protocol 만들기
pickerview를 통해 내가 원하는 원화로 바꾸기
static을 사용했던게 좀 찝찝해서 튜터님과 대화를 하던중,
과제 및 필요한것들을 좀 적다보니 이제서야 시작하게 된다.
Generic (제네릭) 제네릭으로 구현한 기능과 타입은 재사용하기도 쉽고, 코드의 중복을 줄일 수 있다. 제네릭을 사용하고자 할 때는 제네릭이 필요한 타입 또는 메서드의 이름 뒤의 홀화살괄호 기호 사이에 제네릭을 위한 타입 매개변수를 써주어 제네릭을 사용할 것임을 표시한...
1. Protocol (프로토콜)
이젠 더이상 건드릴게 없어 보인다.
조금 더 세분화를 하였다.
이미 과제는 끝났지만, 클래스화를 하고싶은데 생각대로 그게 되지않았다.
예외처리
클로저
접근 제한자
2주차 과제가 주어졌다.
타입 캐스팅
디자인은 생략이라, git clone 이후 부터 시작하겠다.
1. 프로퍼티 옵저버 변수에 프로퍼티 옵저버를 정의하여 프로퍼티 값의 변경 사항을 모니터링하고, 미리 구현한 코드로 이에 대응할 수 있다. 다시 말하면 해당 프로퍼티를 관찰(observe)하면서 변경 사항이 발생할 때 실행된다 willSet보다는 didSet이 많이 사...
extionsion을 사용하여 기능을 별도로 부여하기.
파라미터 수정과 프로토콜
Swift에서는 기능을 명확히 설명하는 이름의 매개변수가 중요하다!
Extensions는 본질적으로 기존클래스, 구조, 기타데이터유형에 추가 기능을 추가 할 수 있게 한다.
날씨 정보를 파싱하여 뷰 컨트롤러에 전달
날씨 상태에 따른 ImageView Update
브랜치 활용하기 (Terminal) 수정은 하고 싶은데 원래 파일은 그대로 두고 싶은 경우.
1. Class(클래스) 클래스는 프로퍼티와 메서드로 구분 되어있다.
1. 클로저란? 클로저는 본질적으로 이름이 없는 익명 함수이다.
API 사용. 개발자들에게 일반 작업을 수행할 수있는 표준 명령을 제공해준다. 일종의 단순 계약으로 볼 수 있다. (개발자와 API공급자 간의 계약)
1. 배열 (Array) 배열은 동일한 타입의 요소를 저장하는 순서가 있는 컬렉션이다. Index는 1부터가 아닌 0부터 시작한다. 처음에 배열의 길이를 미리 정하지 않아도 된다.
Protocol과 Delegate를 응급 구조 상황에 빗대어 코드를 작성하였다.
프로토콜 → 일종의 인증서의 개념으로 생각하면 될 것 같다.
Stack & Queue Stack과 Queue는 데이터에 대한 개념이다 Swift에서는 따로 큐와 스택을 지원하지 않으며, Array등을 사용하여 별도로 직접 구현 할 수 있다.
1주차 과제가 주어졌다.
Optional 1. Optional과 nil 1. Optional 값이 없을 수 있는 상황에서 Optional을 사용한다. 옵셔널은 ? 로 나타낸다. 다음 두 가지 가능성을 나타낸다. 값이 있고 옵셔널로 래핑해놓은 값을 언래핑 하여 해다 ㅇ값에 ...
연산자
데이터 타입
프로퍼티와 출력 1. 할당 연산자 (=) A = B B값을 A에 할당한다. ※ 이때 방향을 잘 확인하도록 하자!
Swift 언어의 특징 안전성(Safe) Swift는 타입에 엄격한 프로그래밍 언어이다 (Type Safe한 언어) 문자열 배열에 다른 타입인 숫자 타입의 값을 담을 수 없다. 타입 안정성을 위해 타입 체크를 해야한다...
본캠프가 시작되면서 강의와함께 같이 공부하는 자료가 주어지는데,
Main Storyboard를 보게되면 날씨 아이콘이 있는데 SF Symbol 이다.
NIL값 처리하기
옵셔널은 왜 사용할까?
Model 만들기
지난 글에서 코드로 label, frame 등 코드로 수작업을 해보았다.
깃 블로그를 작성하다보니 뭔가 기존에 블로그와 사용하는법이 좀 달라서 이참에 정리한다.
어제 포스팅을 해야했으나 velog에서 git blog로 전환 및 내용을 전부 이관하면서 공부를 거의 하지못했다 ㅠ
며칠전 수업을 받으며 Git에 대한 내용을 특강형식으로 받았는데, 협업시 어떻게 진행이 되는지 간략하게 배웠기에 그것을 정리 해보려고 한다.
오래간만에 깃을 쓰니 헷갈려서 정리한다.
출처 (https://proofroto.tistory.com/15) 연산자 정리
사실 이걸 딥다이브에 넣어야 하나 고민이 었는데, 카테고리나 태그를 무분별하게 많이 만드는 것보다는 내가 모르는 것이거나, 기억이 나지 않아 재정리 하는 공간의 개념으로 사용하는것도 괜찮을 것 같아 여기에 글을 적는다.
배열에 대해서 정리를 해보자. 이것도 추가로 필요한게 있다면 지속적으로 수정 할 예정
코딩테스트 문제를 풀다보면 String Index에 관한 문제가 많이 나와 정리한다.
Array (배열) 아이템들의 컬렉션이라고 할 수 있다. 변수에서 배열이란 단일 데이터와 연관되어있다.
생각해보니 Deep Dive는 내가 알고있던것들은 그냥 넘어갔는데, 이참에 그냥 내가 알고있는것들도 정리하는게 좋을 것 같아, Deep Dive로 하여 정리를 하고자 한다.
고차함수 정리.
이제 self review를 해보도록하자.
Quizzler를 했던것을 기반으로 스스로 만들어보자.
이어서 내부 코드를 수정해보도록 하자.
이어서… quizBrain.swift에서 function checkAnswer를 Bool type으로 하고 정답일때 true/ 틀렸을때 false return하게 하였다.
해당 강의 내용을 정리하기전. 강의에서 Structure가 필요하기에 그부분을 정리하고자한다.
앱을 키자마자 위와 같이 문제가 나오게 해보자
EggTimer에서 초가 줄어드는것을 보여주는, 즉 진행률을 보여주는 progress bar를 만들어 보자.
Challenge! 위와 같이 버튼을 눌렀을때 60부터 countdown하는 코드를 작성해보자!
Xylophone에서 각 버튼을 눌렀을때 다음과같이 흐려졌다가 다시 밝아지게 해보자.
UIbutton을 만들어준다. (control & drag)
Auto Layout (1)에서 했던것을 바탕으로 Main의 화면도 Rotate했을때 background, image, button들이 짤리지 않고 유지하게 만들어 보자.
Auto Layout 에서는 폰을 Rotate했을때 어플 화면이 변경되게 하는것을 공부할 예정이다.
아래와같이 디자인을 한다
IBAction 생성하기.
Git에서 가져오기(Clone). 관련file이 있는 곳으로 들어가서 우측의 code를 누른다.
I Am Poor Project를 만들어보자!
Simulation을 할 iPhone Model 선택하기.
asset에 이미지 추가
테이블 뷰 구현 테이블 뷰 만들기 스토리 보드에서 드래그 앤 드롭
문제풀고 이것저것 적느라 이틀만에 수강을 한거같다.
사용자 인터페이스와 로직 연결
조건문, 제어문 컨셉 특정 조건에 다라서 다른 상태를 만들어 주는 문법 코드의 실행 흐름을 관리하는 핵심적인 구성 요소
Swift 기본 문법. 변수와 상수
Main StoryBoard
#1 XCode 시작할때
If you see this page, that means you have setup your site. enjoy! :ghost: :ghost: :ghost:
A Post with Header Image, See Page layout for more examples.