Swift 프로토콜 이해와 활용프로토콜은 객체 지향 프로그래밍의 중요한 개념 중 하나로, 특정 행동이나 기능을 정의하는 규칙을 제공한다. 이번 포스트에서는 프로토콜의 기본 개념, 사용법, 적용 시기, 그리고 예시를 알아보자. 프로토콜이란?프로토콜은 마치 친구들과 놀이를 할 때 정해진 규칙과 같다. 예를 들어, "우리는 숨바꼭질을 할 때 숨는 방법과 찾는 방법을 정해요!"와 같이, 프로토콜은 어떤 행동이나 기능을 수행할 수 있는 방법을 정해주는 규칙이다. 프로토콜 사용법프로토콜 정의하기어떤 규칙을 만들지 정하기예를 들어, "이것은 소리를 내는 방법이에요!"라고 정의할 수 있음프로토콜을 따르는 것만든 규칙을 따라야 하는 클래스나 구조체 정하기이들은 정해진 규칙을 지켜야 함규칙 구현하기클래스나 구조체가..
분류 전체보기
이번에 팀스파르타에서 진행하는 한 달 인턴 1차에 합격하여 과제를 받았다. 회원가입, 로그인, 로그아웃 기능을 구현하는 어떻게 보면 간단한 과제였는데 서버 사용 없이 내부 저장소를 사용하여 구현을 진행하였다. 그런 의미로 이번 포스트에서는 서버 연동 없이 내부 저장소 만으로 이메일과 닉네임을 관리하기 위한 시스템을 구현하는 방법에 대해 알아보자. 이 포스팅은 UserDefaults와 Core Data를 활용하여 사용자 정보를 저장하고 업데이트하는 과정을 포함한다. UserDefaults를 통한 현재 이메일 설정 및 삭제 현재 이메일 저장사용자가 로그인할 때 현재 이메일을 UserDefaults에 저장하여 쉽게 접근할 수 있도록 했다. 아래 코드는 현재 이메일을 저장하는 방법이다.// UserDef..
음... 이건 뭐다냐........ 그냥 충돌은 많이 봤는데 Resolve conflicts 버튼이 활성화 되지 않은 충돌은 처음 봤다. 그래서 일단 우리 친절한 github 가 하라는 대로 프로젝트 터미널을 열어 아래 명령어를 차례로 입력했다. 먼저git pull origin { 병합할 브랜치 }git checkout { 푸쉬 한 브랜치 } 그랬더니 프로젝트 파일에 충돌된 부분들이 표시되기 시작했다. // 현재 브랜치의 코드=======// 병합 대상 브랜치의 코드>>>>>>> { 브랜치 } 대충 이런 식으로 충돌 구간이 표시되는데, 이때 ====을 기준으로 남길 부분을 제외하고 지워주면 된다. 그리고 나서는 똑같다, 마지막만 빼고. git add .git commit -m "commit me..
SwiftUI를 사용하여 앱을 개발할 때, NavigationView를 활용한 내비게이션을 사용하다 문제가 생겼다. 뒤로 가기 버튼이 중첩된다는 것... 분명 숨겼는데 왜 계속 중첩되나 찾아보고 멍청(...) 한 나 자신을 위해 여기 정리해보고자 한다. 문제의 원인GithubLinkView와 같은 특정 뷰에서 두 개의 뒤로 가기 버튼이 나타나는 이유는 다음과 같다. 중첩된 NavigationView: GithubLinkView가 이미 다른 NavigationView 안에 포함되어 있을 때, 새로운 NavigationView를 추가하면 두 개의 내비게이션 바가 생성됨기본 뒤로 가기 버튼 숨기기 실패: 기본적으로 제공되는 뒤로 가기 버튼을 숨기지 않으면, 사용자 정의 버튼과 함께 표시됨 나 같은 경우 ..
이번 포스트에서는 인스턴스와 컴포넌트의 정의, 사용법, 그리고 이 둘의 차이점에 대해 자세히 알아보자. 인스턴스 (Instantiation)인스턴스는 클래스나 구조체의 인스턴스를 생성하는 과정을 의미한다. 클래스는 객체의 설계도와 같고 인스턴스는 그 설계도를 바탕으로 만들어진 실제 객체이며, Swift에서는 class나 struct를 정의한 후, 이를 기반으로 인스턴스를 생성할 수 있다.class Car { var model: String var year: Int init(model: String, year: Int) { self.model = model self.year = year }}// 인스턴스let myCar = Car(model: "Te..
UserDefaults와 KeychainManagerSwift에서 데이터를 저장하는 방법은 여러 가지가 있다. 그 중에서도 UserDefaults와 Keychain은 가장 많이 사용되는 두 가지 방법이다. 이 두 저장소는 각각의 용도와 특성이 다르기 때문에 어떤 상황에서 어떤 저장소를 사용해야 할지 이해하는 것이 중요하다. 그런 의미로 이번 포스트에서는 UserDefaults와 KeychainManager의 개념, 사용법, 그리고 주요 차이점에 대해 자세히 알아보자. UserDefaultsUserDefaults는 간단한 데이터(예: 설정, 사용자 기본값 등)를 저장하는 데 사용되는 클래스이며,. 주로 앱의 사용자 설정이나 간단한 정보를 저장할 때 유용하다. // 값 저장UserDefaults.sta..
이번 포스트에서는 SwiftUI에서 자주 사용되는 주요 속성 래퍼인 @State, @StateObject, @ObservedObject, @Binding, @EnvironmentObject에 대해 자세히 알아보자. @State@State는 뷰의 로컬 상태를 관리하는 데 사용되는 속성 래퍼이다. 뷰가 자신의 상태를 소유하고, 해당 상태가 변경될 때 UI를 자동으로 업데이트합니다.struct CounterView: View { @State private var count = 0 var body: some View { VStack { Text("Count: \(count)") .font(.largeTitle) Butt..