Swift 20

MVC와 MVVM 패턴이란?

프로젝트를 수행하기 위해 공부해야할 것이있다. 그 중 한개가 어떤 패턴을 숙지하고 프로젝트에 적용할것이냐이다. 이번 트랙어스앱 프로젝트에서는 이 두가지 패턴을 적용하기로 하였다. MVC는 Model, View, Controller로 구성되어있다. 간단히 말하면 사람들 눈에 직접보이는 뷰위 모델이 있고 컨트롤러가 두 뷰의 데이터신호를 관리한다. - Model은 소프트웨어나 애플리케이션에서 정보 및 데이터 부분을 의미한다. 이는 Controller에게 받은 데이터를 조작(가공)하는 역할을 수행한다고 볼 수 있다 - Controller(컨트롤러) Controller는 Model과 View 사이에서 데이터 흐름을 제어한다. 사용자가 접근한 URL에 따라 요청을 파악하고 URL에 적절한 Method를 호출하여 S..

Swift/SwiftUI기초 2023.12.30

SwiftUi - annotation 과 Property Wrapper

스위프트ui에서 코드를 보다보면 @State나 @Binding같은 annotaion을 많이 봐왔지만 이것이 뭘 뜻하는 것인지 모르고 "그 상황에서 이렇게 쓴다" 라고만 알고 있었기 때문에 이것이 무슨의미인지 공부해보았습니다. @State나 @Binding를 프로퍼티 래퍼라고 하는데 이 프로퍼티 래퍼는 미리 정의해둔 연산을 사용할 수 있다는 것이다. Swift UI Property Wrappers Learn what SwiftUI's @State, @Binding, @StateObject, @ObservedObject, and other property wrappers do, and when they should be used. swiftuipropertywrappers.com 각 프로퍼티래퍼별로 어떻게 ..

Swift/SwiftUI기초 2023.12.29

TrackUs 프로젝트 - 프로토타이핑 및 기본ui개발

TrackUs 프로젝트 물물교환앱이 프로토파이핑에서 끝났다면 이번에는 앱을 기획하고 프로토타이핑을 한 후에 기본ui, 데이터 차후에는 앱 배포까지 할 예정입니다. TrackUs는 러닝매칭앱입니다 러닝이 취미이신분들과 러닝을 취미로 삼고싶으신 분들께 많은 도움이 되었으면 좋겠습니다. 이번팀에서는 api를 적극 활용하고 현업에 종사하시는 분들께 조언을 많이 구하는 방식으로 진행하였습니다. 프로토타이핑은 전과 같이 피그마로 진행하였습니다. 팀 소개입니다. 노션으로 작업하였습니다. https://www.notion.so/TrackUs-b26e0b86646b4551ba2f65f606f3b73b 저희는 기능정리를 하여서 각자 파트를 담당했습니다. 저는 메이트모집뷰와 마이페이지 설정 뷰 및 뷰 ui 상세조정, 런치스..

옵셔널 바인딩과 if let, guard let이해

옵셔널 바인딩과 if let, guard let의 관계 : 옵셔널 값을 안전하게 사용하기 위한것이 옵셔널 바인딩인데 이때 if let또는 guard let을 사용해서 옵셔널을 바인딩하고 안전하게 값을 가져옵니다. if let 임시상수 = 옵셔널 { 구문 } 이런식으로 임시상수를 사용하여 옵셔널 값이 안전한지 체크합니다(nil여부파악) guard let은 if let과 차이점이 있습니다 guard let 이후 조건문이 false면 else문의 구문을 실행하고 그렇지 않으면 가드문의 else구문을 실행하지않고 코드가 진행됩니다. 그리고 guard let은 전역변수로도 사용이 가능하고 블럭을 종료하는 breack나 return, throw등이 필요합니다. 예외처리에서도 guard let이 적합하고 else문또..

Swift - 타입캐스팅이란?

타입 캐스팅 (Type Casting) - Swift things 배열은 2개의 Int 값, 2개의 Double 값, 하나의 String 값, 하나의 (Double, Double) 타입의 튜플, "Ghostbusters" 영화, 그리고 String 값과 다른 String 값을 반환하는 클로저 표현식을 포함합니다. bbiguduk.gitbook.io 타입캐스팅의 정의는 이렇게 나와있다. 타입 캐스팅 (Type casting) 은 인스턴스의 타입을 확인하거나 해당 인스턴스를 자체 클래스 계층 구조의 다른 곳에서 다른 상위 클래스 또는 하위 클래스로써 취급하는 방법입니다. // 타입 캐스팅 class Pet { var name = "" init(name: String) { self.name = name } }..

Swift - 값, 참조 타입에 대한 개념 (COW)

class 와 struct의 차이점에서 이해했듯 값타입과 참조타입이 있는데( https://teol-it.tistory.com/25 ) struct, enum, tuple 와 기본자료형( Int, Float, Double, Bool, String, Array, Dictionary, Set ) 등은 값타입으로 되어있고 특히 기본자료형은 struct로 만들어져있습니다. 참조타입은 class, function(closure) 등이 있습니다. -- 값 타입은 깊은복사라고 해서 데이터의 새로운 복사본을 생성하는 것이고 -- 참조타입은 원본 데이터를 참조하는 얕은 복사라고 합니다 그래서 얕은복사인 참조타입(class func)은 원본데이터의 값을 변경하는 것이고 구조체와 같은 값타입은 원본데이터의 값을 변경하지 않..

CI/CD란 무엇일까?

CI / CD 단계 각 단계에 대한 자세한 내용 : 지속적인 통합 vs. 지속적인 전달 vs. 지속적인 배포 CI (Continuous Integration) (빌드 테스트를 실시하는 프로세스) 통합 프로세스를 지속적으로 실시 CD (Continuous Deploy 혹은 Continuous Delivery) 프로덕션 환경으로 배포작업을 자동화 하는 것 앱에 적용한 변경사항이 버그 테스트를 거쳐 코드저장소에 자동으로 업로드되고 언제든 실시간으로 배포가능 변경사항의 배포에 대한 비용 시간과 위험 감소 iOS 앱 배포과정 앱을 아카이브 - 아카이브 하는 시간? 앱을 앱컨넥트에 업로드 - 배포 시간? 5~10분 이상 앱이 업로드 될 때까지(지연) 앱을 TestFlight 또는 앱스토어로 배포 연속으로 일어나면 ..

테스트 주도 개발이란? (TDD)

TDD 테스트 주도 개발은(TestDrivenDevelopment)은 매우 짧은 개발 사이클을 반복하는 software 개발 프로세스 중 하나이다. 개발자는 새로운 함수를 정의하는 자동화된 TestCase를 먼저 작성한다. 이후에 TestCase를 통과하기 위한 최소한의 양의 코드를 생성한다. 그리고 마지막에 해당 코드들을 표준에 맞도록 refactoring 하는 것이 바로 TDD 개발 방법이다. - wiki백과 기존 개발 프로세스 설계 -> 개발 -> 테스트 (-> 설계 수정) TDD 프로세스 설계 -> 테스트 (-> 설계 수정) -> 개발 TDD의 3가지 절차 Red(실패) : Writing a Failing Test TDD 개발에서의 첫 번째 단계는 실패이다. 즉, 실패하는 테스트 케이스를 작성하는..

프로토타입을 만드는 단계

프로토타입(Prototype) [~= 설계도, 청사진] 프로토 타입은 본래 ‘원형’을 뜻하는 말 UI/UX 개발에서 프로토 타입은 시제품이 나오기 전, 제품의 핵심 기능과 목표를 테스트할 수 있도록 검증을 위해 만들어진 원형을 의미 프로토 타입은 사용성 테스트를 목적으로 만들어졌기 때문에, 미완성된 시스템이나 중요한 기능의 초기 원형이 포함 제품 프로토타입을 만드는 방법 (단계별) 문제정의 프로토타입이 목표하는 사용자층과 고객경험, 전략, 목표를 구체적으로 설정 핵심 목표 예시 앱 프로토타입을 만든다면 스토리보드 맵, 로딩 속도를 위한 최적화 등 디자인 프로토타입을 작성하는 경우에는 버튼 애니메이션이나 크기, 위치 확정 등 요구사항 및 기능정리 첫 단계에서 설정한 목표를 어떤 환경에서 구현해야 하는지 구..