분류 전체보기
-
[MVVM 연습 프로젝트][Lotto](2) - 기능 추가하기iOS 2021. 12. 30. 16:00
이전 게시글에서 완성한 Lotto프로젝트에 새로운 기능을 추가해보려고 합니다. 전까지는 임의로 회차를 지정해서 정보를 받아왔었는데, PickerView를 추가해서 여러 회차에 대해서 로또 당첨 정보를 얻어와보려고 합니다. 그리고 1등 당첨금액이 너무 길어서 읽기 불편했기 때문에, 숫자에 포맷을 지정해 보기 편하게 해 주겠습니다. 코드는 아래 명령을 통해 다운받으실 수 있습니다. git clone -b lotto_2 https://github.com/sseungmn/MVVM_Practice.git PickerView 추가하기 새로운 PickerView를 추가해보도록 하겠습니다. MVVM에 맞춰서 UI는 View에, 기능은 ViewModel에 구현해보면 좋을 것 같습니다. View에 UI추가하기 LottoV..
-
[MVVM 연습 프로젝트][Lotto](1) - MVVM으로 리펙토링iOS 2021. 12. 30. 01:39
이번에는 MVC로 만든 Lotto프로젝트를 MVVM으로 바꿔보겠습니다. MVVM flow의 핵심이 되는 Observable 클래스를 만들고, 그 클래스를 이용해서 MVVM으로 쉽게 전환할 예정입니다. 코드는 아래 명령을 통해 다운받으실 수 있습니다. git clone -b lotto_1 https://github.com/sseungmn/MVVM_Practice.git Observable 말 그대로, 관찰이 가능하다는 의미입니다. Observable.swift파일을 하나 만들어서 아래 코드를 작성합니다. import Foundation // 모든 타입에 대해서 Observable객체를 만들 수 있게 하기 위해서 // Generic을 사용합니다. T는 Int, String, [Int], Model 등등 모든..
-
Git Conventional Commits카테고리 없음 2021. 12. 29. 16:36
Commit도 Convention을 따라야 하는 이유? CHANGELOG를 자동으로 생성할 수 있다. git-semantic-commits 타입에 기반해서 쉽게 Sementic Versioning을 적용할 수 있다 이해당사자들에게 일맥상통한(명확한) 의미를 전달하기 위해서 구조화된 커밋을 통해 자동화를 사용할 수 있게하기 위해서 구조 [세부 범위(선택)]: [본문(선택)] [꼬리말(선택)] 타입 근본적인 타입 fix : 버그 수정 ( Sementic Versioning에서 PATCH와 관련이 있다.) feat : 새로운 기능 추가 ( Sementic Versioning에서 MINOR와 관련이 있다.) 추가적인 타입(Anguler Convention에서 인용) build : build system이나 외부..
-
Storyboard없이 Code로 UI구현하기iOS/UIKit 2021. 12. 28. 23:39
모든 UI를 Code만으로 작성하기 위해서, Main Storyboard를 없애줄 것입니다. ⁉️ Tip 시작하기 전에 간단한 팁을 하나 드리자면, 어떤 기능을 Storyboard에서가 아닌 Code로 구현하고 싶을 때 구글에 programmatically라는 키워드를 통해 검색하면 조금 더 유용한 정보를 얻을 수 있습니다! 총 3단계를 거치게 됩니다. 첫 번째, Storyboard를 제거해줍니다. Storyboard를 모두 제거한다고, LaunchScreen까지 제거하면 안 됩니다.. LaunchScreen을 코드로 작성해도 되나? 의 대답은 NO라고 하네요 두 번째, Target의 Main Inferface를 지우고, Info.plist의 Storayboard Name을 삭제해줍니다. Main Int..
-
[MVVM 연습 프로젝트][Lotto](0) - MVC로 만들어보기iOS 2021. 12. 28. 23:33
Device : 2021 M1 Macbook pro OS : macOS Monterey 12.0.1 Xcode : Version 13.1 (13A1030d) 안녕하세요! miniOS입니다. 이번에는 MVVM을 공부하면서 간단하게 적용해볼 수 있는 연습용 프로젝트를 만들어 보려고 합니다. 회차별로 로또 추첨 결과에 대해서 얻어오는 서비스를 만들어 보겠습니다. 코드는 아래 명령을 통해서 다운받을 수 있습니다. git clone -b lotto_0 https://github.com/sseungmn/MVVM_Practice.git 준비 로또 API https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo= Project Info.plist를 다른 위치..
-
[Architecture] MVVM에 대해서 알아보기iOS 2021. 12. 28. 23:23
Model 어플리케이션이 무엇을 할지를 담고있다. UI와 완전히 독립적이다. -> Model 파일에서는 UIKit이나 SwiftUI를 import하지 않는다. Data와 Logic을 다룬다. View 어플리케이션이 어떻게 보여질지를 담고있다. Stateless 가끔 View의 여러가지 테마중 어떤 테마인지에 따라서 View의 모습이 바뀌는 등 State에 종속적인 부분도 있다고 생각할 수 있다. 하지만 그것은 어플리케이션의 Logic과는 아무 상관이 없다. Declarative 코드에 있는 View가 모두 그려지고 나면 더 이상 바뀌지 않는다. 바꾸고 싶다면 다시 그려야 한다. ✔️ View의 `Declarative`에는 장점이 있다. code를 작성할 때 UI가 어떻게 생길지 쉽게 상상할 수 있고, 마..
-
UIKit과 DispatchQueue.main의 관계 / 실제 예시를 통해 알아보기iOS/UIKit 2021. 12. 26. 23:41
InfoView - shadowLayer - StackView - textLabel - tagLabel - descriptionLabel 위와 같은 계층 구조를 갖고 있는 InfoView가 있다. 초기 화면 구성시 동작 순서는 다음과 같다. 1. API를 통해 받아온 데이터를 InfoView에 대입해준다. 2. 데이터를 대입해줌에 따라서, StackView의 크기가 바뀔 것이다. 3. InfoView의 bound에 맞춰서 shadow를 적용하는 updateShadow() 메서드가 실행된다. 그러나 왼쪽 화면과 같이 bounds가 제대로 계산되지 않고 shadow가 적용된 것을 볼 수 있다. 각 함수들에 `height`을 출력하는 프린트문을 넣어서 디버깅 해보면 결과는 아래와 같다. public func ..
-
[맥주] 맥주 추천 어플 만들기(1) - API Requset카테고리 없음 2021. 12. 23. 22:42
Device : 2021 M1 Macbook pro OS : macOS Monterey 12.1 Xcode : Version 13.1 (13A1030d) 이제 Alamofire와 맥주 API를 이용해서 추천 맥주의 정보를 받아오는 부분을 구현하려합니다. API 테스트 맥주 API에 들어가서 문서를 보면, 추천 맥주를 받아오는 API가 굉장히 간단하게 구현되어있습니다. 이걸 테스트 해 보려면 간단하게 curl을 제외한 주소를 복사해서 safari에서 열어주면 됩니다. 위 화면은 Safari Json Extension을 통해서 확인한 결과이므로, 필요하다면 링크에 들어가서 설치하시면 됩니다. 구조체 Model 만들기 이 JSON결과를 우리가 사용할 수 있게 디코딩하려면, JSON결과와 매칭되는 Codable..