본격적으로 iOS개발 본캠프가 시작되서 새로운 마음으로 공부를 시작하며 본격적으로 매일매일 TIL을 작성해야되겠다는 다짐을 했다. (앞으로도 꾸준히 일기형식으로라도 작성하길 바라며)오늘 한것은 크게 세가지로조편성후 팀 프로젝트 시작팀프로젝트를 위한 설계 및 파트 나누기
금일은 내가 UI만들고 UI개발 관련한 내용과 지식이 부족하다고 판단이 되서 강의를 좀 찾아서 들은다음에 개발을 했었다.그 이후 개발을 시작했지만 다사다난한 각종 오류와 시행착오를 겪은날이다.cannot find type '' in scopeExpression impl
금일은 새로운 기능 추가 및 git연결을 진행했다.화면-코드간 연결 체크탭 제스쳐 기능 구현git 연결일단 새로 기능을 넣다가 잘못된 상황이 발생해서 어제와 같은 방법으로 지웠음에도 제대로 인식을 못하는 상황이 발생했었다.해당 부분은 추가한 오브젝트를 클릭 후 맨 좌측
금일은 프로젝트 마무리 과정과 각 팀별로 발표과정을 진행했었다.제대로된 준비랑 공부를 안해서 퀄리티적으로는 상당히 부족했었지만 팀원분들의 도움과 어찌저찌 마무리를하고 발표를 끝냈었는데 개인적으로 상당한 현타와 부족함을 다시 느끼는 시간이였다부족한 부분은 팀원분들의 도움
금일은 제공해준 iOS 강의를 보면서 기초적인 정보랑 문법을 배울수 있는 날이였다.iOS에 대해서 아는것이 없으니 되게 중요한 첫 시작이였다고 생각이 들어서 집중해서 들었었다.일단 배운기초적인것들을 정리를하자면Swift는 Camel Case라는 방식으로 이름을 짓는다
문법적인 부분이 공부할게 참 많다고 느끼는데다가 뭔가 공부를 제대로 한걸 테스트 할려고 하니 시간이 부족한것같다.일단 어제에 이어서 계속해서 문법 강의를보면서 정리르하지만 할거랑 신경쓸게 많은것같다 (개념적인 부분은 알지만 문법적, 혹은 부가설명에서 꼬리물고 나오는 내
금일은 본 강의내용을 바탕으로 제공해준 문제풀이 및 튜터님과의 면담시간, 알고리즘 강연이 있었다.Lv1더하기, 빼기, 나누기, 곱하기 연산을 수행할 수 있는 Calculator 클래스를 만들기생성한 클래스를 이용하여 연산을 진행하고 출력먼저 내가 생각한방식은 enum과
금일은 LV3계산기 문제를 풀면서 부족한 부분이 뭔지를 깨달은 하루였다.아래 각각의 클래스들을 만들고 클래스간의 관계를 고려하여 Calculator 클래스와 관계 맺기AddOperation(더하기)SubstractOperation(빼기)MultiplyOperation(
금일 진행한 공부는 크게 세개로git공부 (개념적인 부분 및 몇가지 연습)강의영상사실 아직까지도 나는 깃이 어렵다고 느끼고있다.전 회사에서 사용한 형상관리도구는 중앙집중형 형상관리도구이기도 하고 머리로는 개념을 이해한것 같지만 실제 사용부분에서는 아직 의문점이 많기때문
오늘도 문법주간으로 주말에 못본 문법강의들을 다 몰아서 봤지만 시간적인 이슈로 따로 TIL을 작성을 못해서 한번에 정리할려고 한다.열거형은 Swift에서 특정 주제나 종류에 따라 묶을 수 있는 값들을 그룹화하고 정의하여 데이터타입으로 사용할 수 있다.enum 특징관련된
일단 금일은 남은 강의영상을 끝내고 과제 및 깃 연결을 하다가 생긴 오류를 정리를 해볼까 한다.팀 노션을 통해서 과제 진행률을 공유하자고해서 먼저 깃허브 레퍼지토리를 만들고 깃 연동까지 했는데... pull하는데 지속적인 오류가 발생했어서 찾아보니 오류가 발생했었다.이
금일은 숫자야구 문제를 더 푸는 시간을 가졌다.BaseballGame.Swiftmain.Swift해당부분은 게임을 시작 및 프린트문으로 유저에게 보여주는 main.Swift파일과 게임로직을 실행하는 BaseballGame.Swift파일 두개로 나누어서 작성했다.맨 앞자
금일은 남은 숫자야구 문제 및 만들면서 겪은 트러블 슈팅을 정리해볼려고 한다.이전의 게임 기록들 초기화시키기1, 2, 3 이외의 값에 오류메시지 보여주기이렇게 기능구현을 했다.먼저 해당 코드내용은 아래와 같다.main.Swift파일에서 showMenu 함수내에 case
Swift는 기본적으로 nil(값없음)을 허용하지 않지만 개발을 하다 보면 값이 없는 경우가 생기게 된다.예를들어 앞에서 만든 Person struct에서 프로퍼티로 소유하고 있는 자동차를 넣고 싶은데 모든 사람이 자동차를 갖고있지는 않다.이럴때 사용할 수 있는 것이
본격적으로 앱개발이 시작되면서 화면그리는법(storyboard UI)을 배우기 시작하면서 강의 들으면서 알게된, 혹은 따로 공부한 항목들에 대해서 정리를 좀 해볼까 한다.강의가 잘못나와서 내일 새로 다시 들어야하지만....OverviewUI(User Interface)
컴파일(Compile)컴파일이란 어떤 언어의 코드 전체를 다른 언어로 바꿔주는 과정이다.즉, Swift에서 컴파일이란,사람이 이해하기 쉬운 High Level 언어인 Swift로 작성한 코드를컴퓨터가 이해하기 쉬운 바이너리 파일로 변환하는 과정.빌드 (Build)소스
UIkit에서 프리뷰를 띄워서 바로 수정사항을 확인 할 수 있다고 들어서 자료들을 찾아보고 만들었지만 안되서 찾아보다 원인을 찾았다.바로 코드베이스 기반으로 만든다면방식을 통해서 사용 할 수 있다고 했지만 아이폰 테만 뜨고 적용이 안됐다.먼저 원인을 말하자면코드베이스로
과제를 하던 도중 발생한 오류로 해당 에러는 view.add를 제대로 선언을 안해서 발생한 오류였었다.실제로 과제를 하면서 Lv2까지는 별 문제가 없이 잘 진행 했었는데 Lv3항목을 진행하면서 제대로 항목 추가를 안해서 발생한 오류였었다.생각보다 누락, 혹은 잘못된 위
일주일동안 iOS 스토리보드UI와 UIkit codebase를 사용해서 계산기앱을 만들었다.일단 제공된 스토리보드UI랑 코드베이스 강의를 보면서 만들었지만 강의내용에서 부족한부분이 많다고 생각이되서 머리 박으면서 검색과 공식문서를 통해서 겨우겨우 만들었지만 이것저것 억
객체지향 설계를 할 때 자주 발생하는 문제들을 피하기 위해 사용되는 패턴.여러 사람이 협업해서 개발할 때 다른 사람이 작성한 코드, 기존에 존재하는 코드를 이해하는 것은 어렵다. 이런 코드를 수정하거나 새로운 기능을 추가해야 하는데 의도치 않은 결과나 버그를 발생시키기
기존에 만들던 계산기가 아닌, 애플순정 앱에 있는 계산기 기능을 만들어봐야지 했는데 상당히 난처한 상황에 빠졌다.변경점 정리1\. 버튼색상변경 기존의 버튼 색이 아닌 살짝 다른 색상조정버튼배치변경4-4배열이 아닌 4-5배열로 수정신규 버튼들 기능구현\+/- 기능구현%
대부분 원하던것을 다 끝내고 드디어 다 만들었다.아쉬운 부분들도 많고 시간이 많이 걸렸지만 그래도 기본적으로 원하는 방식으로 코드들을 작성하고 디자인적으로 다 만든것같으니 작성한 코드들도 얘기하면서 트러블 슈팅작성을 해봐야할것같다.일단 단일파일로 만든 버전이며 어제에
Git & GitHub 협업 가이드 목차 1. Git 기본 명령어 2. GitHub 협업 프로젝트 세팅 3. 협업 워크플로우 4. 효과적인 협업을 위한 팁 5. 브랜치 보호 규칙 상세 가이드 6. Git/GitHub 주요 용어 세부 설명 1. Git 기본 명령어 저장소 생성/복제 기본 작업 브랜치 관련 2. GitHub 협업 프로젝트 세팅 A)...
협업 방식 비교(2. 커밋 컨벤션(3. Pull Request 가이드(단순한 권한 구조ReadWriteAdmin개인이 소유권을 가짐소규모 프로젝트나 간단한 협업에 적합저장소별로 개별적으로 collaborator 초대/관리개인 프로젝트소규모 팀 프로젝트간단한 협업더 세분
본격적인 일주일간 팀 프로젝트에 들어가면서 개발을 시작하는데 과제는 키오스크 만들기다.레퍼런스 및 회의내용먼저 팀원들과의 원활한 소통과 목,금 같이 깃 공부 및 세팅을 진행하면서 상당히 스무스하게 뼈대를 만드는데는 성공했다.일단 위의 사진은 레퍼런스를 정하고 팀원들과
금일 GitHub에서 팀원들과 만든 파일들을 공유하는 과정에서 'DS_Store' 파일로 인한 컨플릭트가 발생했다. .gitignore를 설정했음에도 문제가 발생했는데, 이는 DS_Store 파일의 다양한 형태를 모두 고려하지 않았기 때문이었다.단순히 .DS_Store
팀원이 SceneDelegate 파일을 테스트용으로 수정한 내용을 포함하여 푸시하면서 컨플릭트 발생GitHub에서 직접 window.rootViewController 부분을 원래 상태로 수정하여 컨플릭트 해결파일명 중복 또는 파일 관련 문제로 인한 오류 발생info.p
이번주차에 키오스크 만드는 프로젝트를 진행했었다. 그 과정동안 겪은 일들과 고민, 고심한 일들을 정리를 하고자 한다.프로젝트는 팀원들과의 사전 협업을 통해서 깃 방식부터 시작을해서 서로 역할, 개발할 범위들을 잘 나눠서 진행했다. 그 과정에서 팀원들과의 소통과 교류를
메모리와 디스크는 모두 컴퓨터나 스마트폰에서 데이터의 저장 및 처리를 담당하지만 목적과 특성이 다르다.▪️ 메모리일반적으로 RAM 을 말하는 경우가 많다.맥북에서도 몇 GB 짜리 RAM 을 사용하는지 볼 수 있다.RAM 은 휘발성 메모리이다. 즉, 데이터를 영구적으로
네트워크란 둘 이상의 컴퓨터가 연결되고 소통하는 것을 의미한다.다음과 같은 개념들을 알고 있어야 한다:아이폰도 하나의 컴퓨터이고, 서버도 하나의 컴퓨터로 생각할 수 있다. 따라서 서버와 아이폰의 통신도 네트워크 통신이다.인터넷은 전 세계 컴퓨터를 연결하는 거대한 네트워
CRUD는 일반적인 개발론에서 자주 사용되는 용어로, 다음과 같은 의미를 가진다:Create: 데이터 생성Read: 데이터 읽기Update: 데이터 업데이트 (쓰기)Delete: 데이터 삭제예를 들어, 전화번호 앱에서의 CRUD는 다음과 같이 적용된다:C: 새로운 전화
Alamofire는 Swift 기반의 HTTP 네트워킹 라이브러리이다. iOS와 macOS 애플리케이션 개발에서 네트워크 작업을 더 쉽게 처리할 수 있도록 도와주는 도구이다.Session: 네트워크 요청을 관리하는 핵심 객체Request: HTTP 요청을 나타내는 객체
ScrollView는 iOS에서 콘텐츠가 화면보다 클 때 스크롤을 통해 모든 콘텐츠를 볼 수 있게 해주는 뷰이다. 주로 다음과 같은 상황에서 사용된다:긴 폼이나 설문지이미지나 텍스트가 화면을 벗어나는 경우가로 스크롤이 필요한 갤러리나 캐러셀줌인/줌아웃이 필요한 이미지
프리뷰에서 기본 뷰 컨트롤러를 보여주는 방법을 알아보자.이렇게 하면 네비게이션 바가 없는 기본 뷰만 보이게 된다.네비게이션 기능을 테스트하려면 다음과 같이 설정하면 된다:네비게이션 컨트롤러를 사용하면 이런 장점이 있다:실제 앱과 동일한 환경에서 테스트할 수 있다네비게이
CoreData: 연락처 정보 저장 및 관리SnapKit: Auto Layout 구현UIKit: UI 구현URLSession: 포켓몬 API 통신SwiftUI Preview: UI 미리보기클래스 이름을 static 상수로 관리하여 문자열 오타 방지Key enum을 통한
이미지뷰 터치 시 폴더 접근 현상이 발생했다. 이는 buttonTapped 메서드로 인해 발생하는 문제였다.이미지뷰에 탭 제스처 인식기를 추가이미지뷰의 사용자 상호작용을 활성화탭 발생 시 이미지 피커를 모달로 표시UITextField의 델리게이트 메서드를 활용입력된 문
Core Data는 애플의 코코아 개발 환경에서 제공하는 인 메모리(In-Memory) 방식의 데이터 관리 프레임워크다.데이터베이스와 유사한 CRUD 작업 수행 가능Apple 생태계(iOS, macOS 등) 전반 지원Objective-C와 Swift 모두 사용 가능SQ
금주 새로운 팀 프로젝트를 시작하면서 Git Flow 전략과 커밋 메시지 작성법을 정리해봤다. 또한 이번에 어떻게 할것인지 팀원들과 정리한 내용을 적었다.Git Flow는 효율적인 브랜치 관리를 위한 전략이다. 프로젝트의 규모가 커지고 여러 명이 협업할 때 특히 유용하
이번에 프로젝트에 UserDefaults를 사용하게됬는데 딱히 사용한 적이 없는 UserDefaults에 대해서 따로 알아본 내용들을 정리만 한 내용들이다.UserDefaults는 iOS 애플리케이션에서 데이터를 영구적으로 저장하는 인터페이스다.키-값 쌍으로 데이터 저
UserDefaults는 iOS 앱에서 간단한 데이터를 영구적으로 저장할 수 있는 인터페이스입니다. 키-값 쌍으로 데이터를 저장하며, 앱이 종료되어도 데이터가 유지한다.⚠️ 주의: 실제 앱에서는 보안을 위해 민감한 정보(비밀번호 등)의 저장에 Keychain을 사용해야
현재 로그인-회원가입-마이페이지간 기능구현 및 데이터 저장을 맡아서 개발을 완료한상태다.로그아웃 시 사용자 정보는 유지하면서 로그인 상태만 변경하는 방법이다.사용자 페이지에서 저장된 이메일과 이름을 표시하는 방법이다.시뮬레이터에서 앱 실행Terminal에서 다음 명령어
iOS 앱의 UI 구조화 작업과 사용자 경험 개선 과정에 대해 정리해보았다. UserPageView 개선 작업을 진행하면서 얻은 인사이트를 공유하고자 한다.기존 UserPageView의 복잡한 구조로 인해 코드 관리의 어려움이 있었고, 사용자 경험 측면에서도 개선이 필
이번 주는 영화 예매 앱의 핵심 기능들을 개발하는 시간을 가졌다. 처음에는 막막했지만, 하나씩 구현해나가면서 점점 앱이 모양새를 갖춰가는 걸 보니 뿌듯했다. 특히 사용자 인증부터 영화 목록, 예매 기능까지 기본적인 기능들을 구현하면서 많이 배웠고 성장할 수 있었다.로그
메모리 관리의 기본 개념(2. 메모리 사용량 모니터링(3. 이미지 처리 최적화(4. 메모리 누수 방지(5. 백그라운드 상태 메모리 관리(6. 객체 수명 주기 관리(iOS는 가상 메모리 시스템을 통해 각 앱에 독립된 메모리 공간을 제공한다. 메모리는 크게 세 가지 유형으
iOS 개발을 진행하면서 프로세스와 스레드, 그리고 이를 관리하는 GCD(Grand Central Dispatch)에 대한 이해는 필수적이다. 이번 글에서는 이러한 개념들을 상세히 살펴보고자 한다.프로세스는 실행 중인 프로그램을 의미한다. iOS 앱이 실행되면 하나의
iOS 앱 개발에서 디자인 패턴과 아키텍처는 코드의 품질과 유지 보수성을 높이는 데 필수적인 요소이다. 이번 글에서는 이러한 개념들을 자세히 살펴보고자 한다.기능이 동작하는 코드를 작성하는 것은 개발의 기본이지만, 잘 짠 코드는 다음과 같은 특징을 가진다:가독성: 다른
UIKit을 사용하여 책 검색 앱을 구현한 과정을 정리하였다. TabBarController를 기반으로 검색 화면과 북마크 화면을 구현하고, SnapKit을 활용하여 UI를 구성하였다.Xcode 161.iOS 18.0+SnapKit탭바를 통한 화면 전환 (검색/북마크)
도서 검색 앱을 MVVM 패턴으로 리팩토링한 과정을 정리하였다. 기존의 MVC 패턴으로 구현된 코드를 MVVM으로 전환하면서 코드의 구조를 개선하고 유지보수성을 높이는 데 중점을 두었다.기존의 단일 파일 구조에서 다음과 같이 역할별로 파일을 분리하였다:카카오 도서 검색
도서 검색 앱의 기능 추가와 개선 작업을 진행하였다. CoreData를 도입하여 데이터 영구 저장소를 구현하고, UI/UX를 전반적으로 수정했다.싱글톤 패턴으로 CoreData 관리 구현책 정보의 저장, 조회, 삭제 기능 구현AppDelegate와 연동하여 CoreDa
도서 검색 앱의 기능 개선 작업을 진행하였다. CoreData를 활용하여 최근 본 책 기능을 구현하고, 전반적인 코드 구조를 개선하였다.CoreData를 활용하여 앱 재시작 시에도 데이터 유지썸네일 URL 저장으로 이미지 표시 기능 구현최근 본 책의 시각적 확인 기능최
카카오 도서 검색 API를 활용한 도서 검색 애플리케이션에 무한 스크롤 페이징 기능을 구현한 과정을 정리하였다.한 번의 검색으로 최대 10개의 결과만 표시추가 결과를 보기 위해서는 새로운 검색 필요사용자 경험 저하페이지네이션을 위한 상태 관리 속성 추가:페이지 단위 데
카카오 도서 검색 API를 활용하여 책을 검색하고 관리할 수 있는 iOS 앱을 개발하였다. MVVM 패턴을 적용하고 CoreData를 활용한 데이터 관리, 무한 스크롤 등 다양한 기능을 구현하였다.iOS 17.0+Xcode 15Swift 5.9SnapKitCoreDat
iOS 기본 알람 앱을 벤치마킹하여 알람, 스톱워치, 타이머 기능을 구현한 프로젝트입니다. MVVM 아키텍처를 적용하고 팀원들과의 효율적인 협업을 위해 Git Flow 전략을 도입했습니다.프로젝트명: 알람 앱개발 기간: 2024.01.07 ~ 2024.01.15개발 인
기존의 기본적인 타이머 앱에 CoreData를 통합하고 UX를 개선하는 과정을 정리하였다. 데이터 영속성 구현과 사용자 경험 향상에 중점을 두었다.타이머 데이터의 영구 저장 기능 구현TimerCoreDataManager 싱글톤 패턴 적용데이터 CRUD 작업 메서드 구현
기존: 단순 TextField로 구현개선: 레이블 컨테이너 뷰 추가 (labelContainerView)좌측에 "레이블" 텍스트 라벨 추가 (labelTextLabel)우측에 이름 입력 필드 배치 (nameTextField)전체적인 디자인 통일성 향상새로운 "타이머 종
주요 특징:UUID를 사용하여 각 음악 파일의 고유성 보장음악의 메타데이터(이름, 파일명) 및 상태(선택 여부) 관리정적 메서드를 통한 기본 음악 상태 제공구조체를 사용하여 값 타입의 이점 활용주요 특징:Delegate 패턴을 통한 화면 간 데이터 전달 구현AVAudi
기존 버튼 방식에서 PickerView로 전환하여 사용성을 크게 개선했다.레이블 컨테이너 뷰 추가 (labelContainerView)좌측에 "레이블" 텍스트 추가 (labelTextLabel)우측에 이름 입력 필드 배치 (nameTextField)전체적인 디자인 통일
타이머의 카운트다운이 완료되었을 때 알람 화면을 표시하고, 선택된 알람음을 재생하도록 구현했다.알람 화면의 "중단" 버튼을 눌렀을 때 동영상 배경과 알람음이 모두 멈추도록 구현했다.알람 화면에서 다시 알림 시간을 조정하고 적용할 수 있도록 구현했다.타이머 화면의 색상과
#iOS #TIL #Swift #UIKit #Timer #AVFoundation #CoreData #Combine #iOS개발 #MVVM #SwiftUI #UX iOS 타이머 앱 개발 회고록 📱 이번 주는 iOS 타이머 앱의 핵심 기능들을 개발하고 개선하는 작업을
개발자로서 새로운 프로젝트를 시작할 때 가장 중요한 것은 아이디어와 열정이지만, 때로는 그것만으로는 부족할 때가 있다. 나는 최근 전자상거래 앱을 기획하면서 이 점을 뼈저리게 깨달았다.처음에는 흥미진진한 아이디어와 함께 시작했다:사용자 니즈 분석UI/UX 기획핵심 기능
앱 와이어프레임 구현앱 로고 디자인 컨셉 설정상단 검색바 구현카테고리 이미지 섹션최신 구인/구직글 리스트 섹션하단 탭바 네비게이션구인/구직 선택직무 선택 (다중 선택 가능)시급성 선택아이디어 상황 선택경험 선택선택된 필터 태그 표시검색 결과 리스트페이지네이션로그인/회원
신고 처리 여부(treatment) 기능 구현게시글 작성시 경험 태그 자동 저장 기능기술 스택 태그 선택 시 이미지 자동 등록마이페이지/게시글 작성의 기술 스택 태그 선택 기능댓글-답글 기능 및 알림신고 처리 결과 알림즐겨찾기(북마크) 기능조회수/관심수 표시인기 게시글
이번 포스팅에서는 프로젝트 모집/참여 플랫폼의 핵심 기능인 게시글 작성과 상세보기 화면을 구현하는 방법을 정리했다. UIKit과 SnapKit을 사용하여 구현했고, 추후 Firebase 연동을 위한 테스트 용도로 제작했다.iOS: 16.6 이상Xcode: 15.0Swi
게시글 작성 화면에 다음 기능들을 구현했다:구인/구직 선택직무 선택기술 스택 입력시급성 선택아이디어 상황 선택모집 인원 입력상황 선택 (온라인/오프라인)경험 선택 및 설명제목 및 상세 내용 입력카드 형태의 게시글 표시태그, 제목, 내용, 작성자, 날짜 정보 표시게시글
네비게이션 스택에 화면을 쌓는 방식이다자동으로 뒤로가기 버튼이 생성된다구현 코드:현재 화면 위에 새 화면을 모달로 표시한다dismiss로 수동 닫기가 필요하다구현 코드:전체 화면으로 전환하고 싶을 때는 다음과 같이 구현했다:새 네비게이션 컨트롤러를 생성하여 이전 스택을
신고 기능의 핵심 로직은 다음과 같다:실제 사용자 닉네임 연동신고 횟수 제한신고 내역 조회 기능관리자 페이지 연동중복 신고 방지빈칸 있을시 신고하기 버튼 비활성화
먼저 게시글을 위한 데이터 모델을 다음과 같이 생성했다:게시글 CRUD 작업을 위한 Service 클래스는 다음과 같이 구현했다:필수 입력값 검증Firebase에 데이터 업로드게시글 타입에 따른 필터링작성일 기준 내림차순 정렬기존 데이터 유지 및 수정수정된 데이터 업데