Swift 24

[프로그래머스] Lv. 1 - 바탕화면 정리

제목: Lv. 1 - 바탕화면 정리시간: 20분가볍게 프로그래머스에서 제목이 끌리는대로 한번 풀어봤습니다. https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 바탕화면에 있는 아이콘을 드래그했을 때 어떻게 해야 최소 넓이를 가진 사각형으로 드래그를 할 것인가를 구하는 문제입니다. import Foundationfunc solution(_ wallpaper:[String]) -> [Int] { // 가장자리 왼쪽 위 : 0, 0 (세로, 가로) // 빈칸 . , 파일이 # ..

알고리즘/문제 2024.11.17

[iOS] RxSwift - 기본 문법 정리

⭐️ Observable 1️⃣ Observable Reactive X에는 옵저버가 있다. 이 옵저버는 Observable을 구독해서 지켜본다. Observable이 배출하는 하나 또는 연속된 항목에 옵저버는 반응한다. 이러한 패턴은 동시성 연산을 가능하게 한다. 그 이유는! Observable이 객체를 배출할 때까지 그 시점을 감시하는 관찰자를 옵저버에 두고, observable이 객체를 배출하면 관찰자는 옵저버에게 알림을 준다. 위 내용을 마블 다이어 그램으로 요약하면 다음과 같다. (직역 주의) 이것은 타임라인이다. / Observable 의 / 시간은 왼쪽에서 오른쪽으로 간다. 이것은 아이템들이다. / 생성된 / Observable에 의해 이 수직선은 나타낸다. / Observable이 성공적으로..

iOS/RxSwift 2022.07.23

[iOS] Unit Test - 단위 테스트 어떻게 하는건데.. (4)

[iOS] TDD TDD (테스트 주도 개발) 테스트 주도 개발 (Test-driven development TDD) 은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링 한다. - 위키백과 - TDD(Test Driven Development)는 개발을 하는 데에 있어서 테스트가 주가 되어 개발을 이끌어나간다는 의미로 소프트웨어를 개발하는 방법론 중에 하나입니다. 지금까지 우리가 유닛 테스트를 작성해온 것들을 돌아보면 모두 이미 작성된 메서드에 대해서 테스트를 만들어주었는데요, 테스트 주도 ..

iOS/Unit Test 2022.07.12

[iOS] Unit Test - 단위 테스트 어떻게 하는건데.. (3)

🙈서론 이제 실전으로 들어가보자. 예제로 Unit Test를 해보려고 한다. @testable 테스트 메서드를 작성하기 전에 @testable import [타켓 명] 라는 코드를 작성해줘야 한다. @testable은 Unit Test에서 실제 앱 타깃에 있는 코드들에 접근하기 위한 키워드이다. 보통 앱 코드 내부에서는 internal 수준의 접근 제한으로 타입을 만들어주는 것이 일반적이다. 그렇기 때문에 앱 타깃의 타입들에 외부 타깃에서 접근하는 것이 불가능한데, @testable은 테스트 하는 동안에는 다른 타깃의 코드에 접근할 수 있도록 해주는 것이다. SUT (System Under Test) Test 클래스의 첫 줄에 test할 타입을 넣은 프로퍼티를 만든다. setUpWithError가 먼저 ..

iOS/Unit Test 2022.07.12

[iOS] Unit Test - 단위 테스트 어떻게 하는건데.. (2)

🙈서론 이번 글은 야곰 아카데미의 한 강의를 거의 따라썼다시피.. 네.. 그렇습니다.. 이해하면서 쓰고 있어요 ㅎㅎ,, 이 파트는 Test file을 보며 마무리 짓습니다. XCTest XCTest는 유닛 테스트, 퍼포먼스 테스트, UI 테스트를 만들고 실행하는 프레임 워크이다. XCTestCase 테스트 클래스가 상속하고 있는 XCTestCase는 무엇일까? XCTestCase 는 추상 클래스인 XCTest의 하위 클래스로, 테스트를 작성하기 위해 상송해야 하는 가장 기본적인 클래스이다. XCTest는 테스트를 위한 프레임 워크의 이름이기도 하고, 테스트에서 가장 기본이 되는 추상 클래스의 이름이기도 하다. XCTestCase를 상속받은 클래스에서는 test에서 사용되는 다양한 프로퍼티와 메서드를 사용..

iOS/Unit Test 2022.07.08

[iOS] Unit Test - 단위 테스트 어떻게 하는건데.. (1)

🙈 서론 여러 세션이나 채용공고를 보면 단위 테스트에 대한 이야기를 많이 접할 수 있다. 테스트하며 코딩을 하면 유지보수가 용이하고 코드 안정성을 높이는 등 다양한 장점이 있다. 여태 테스트의 중요성에 대해 잘 알고 있었지만, 내 프로젝트에는 적용해보진 못했다. 그래서 한번 자세하게 파보고자 정리해보려고 한다. ❓Unit Test에 대해 정의 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차 즉, 모든 함수와 메소드에 대한 테스트 케이스를 작성하는 절차를 말한다. 이를 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다. 이상적으로 테스트 케이스는 분리되어야 한다. 이를 위해 가짜 객체(Mock obje..

iOS/Unit Test 2022.07.02

[WWDC 2022] Swift Student Challenge 후기

대회에 대해 간단한 설명 우리는 올해의 흥미진진한 스위프트 학생 챌린지에 코딩하는 것을 좋아하는 전 세계 학생들을 오랫동안 지원해 왔습니다. 당신이 선택한 주제에 관한 놀라운 Swift Playground 앱 프로젝트를 만들어 당신의 코딩에 대한 열정을 보여주십시오. 당첨자에게는 WWDC22 전용 아우터, 맞춤형 핀셋, 애플 개발자 프로그램 1년 회원권이 주어진다. 즉, 학생을 위한 간단한 앱 공모전이다. 자세한 내용 이 대회는 매년 6월에 WWDC 하기 직전에 열리는데 5월쯤부터 미리 생각해놓는 게 좋다. 아래 링크에 접속해서 지원 자격, 프로젝트 조건, 절차, 심사 기준을 참고해보는 게 보는 것을 추천한다. https://developer.apple.com/wwdc22/swift-student-cha..

WWDC 2022.06.27

[iOS App Dev Tutorials] SwiftUI - Drawing

Apple Developer Documentation developer.apple.com 1. Drawing the Timer View Section 1. Create the Meeting Timer View 아무런 기능이 없던 원래 원을 없애고 작업률을 나타내는 새로운 원과 발표자의 이름을 포함하는 View를 넣을 것이다. struct MeetingTimerView: View { let speakers: [ScrumTimer.Speaker] let theme: Theme private var currentSpeaker: String { speakers.first(where: { !$0.isCompleted })?.name ?? "Someone" } var body: some View { Circle()..

[iOS App Dev Tutorials] SwiftUI - Persistence and Concurrency (5)

Apple Developer Documentation developer.apple.com 5. Handling Errors 앱을 개발하는 동안 구문 또는 의미론적 오류가 발생하여 수정되었을 수 있다. 예를 들어 네트워크 연결이 끊어져서 파일에서 데이터를 읽는 것을 실패할 수 있다. 이런 문제가 발생했을 때 안내를 제공해서 오류를 해결하는 방법에 대해 알아보자! Section 1. Add an Error Wrapper Structure 항상 작업을 완료하거나 출력을 생성하는 기능이 있을 수 있다. 파일에 읽기 권한이 없거나 지정한 경로에 없을 수도 있다. 아니면 인코딩 형식이 올바르지 않을 수도 있다. 작업이 실패했을 때 무엇이 오류를 야기했는지 사용자에게 이해시켜주는 것이 도움이 된다. import Fo..

[iOS App Dev Tutorials] SwiftUI - Persistence and Concurrency (4)

Apple Developer Documentation developer.apple.com 4. Modernizing Asynchronous Code Swift 5.5 는 async/await 과 구조화된 동시성을 포함한 새로운 동시성 기능 세트를 도입했다. 앞에서 했던 지속 데이터에서 작성한 로드 및 저장 방법은 비동기적이지만 새 비동기/대기 패턴과 호환되지 않는다. 이 튜토리얼에서는 다른 비동기 코드에서 메서드를 호출할 수 있도록 이러한 메서드에 대한 비동기 인터페이스를 만든다. Section 1. Change the Deployment Target (이거 삭제하고 바꾸는 사진 넣기) Scrumdinger project (최상위 파일)을 클릭하고 target에 있는 프로젝트를 클릭하면, info 섹션에..