분류 전체보기
-
concat & mergeRxSwift 2021. 8. 16. 14:40
안녕하세요. 그린입니다🟢 이번 포스팅에서는 concat과 merge에 대해 학습해보겠습니다🧑🏻💻 일단 두 단어의 사전적인 의미부터 살펴보면, concat은 concatenate의 약자로 연줄의, 사슬을 잇다 라는 그런 뉘앙스의 뜻을 가지고 있습니다. merge는 합병, 합치다, 융합하다, 어우어리지다 등등의 뉘앙스의 뜻이 있네요! 다들 merge는 깃을 사용하던 뭘하던 다양하게 들어보셨을텐데 concat도 사전적 의미를 보면 동일한 기능을 해줄거라는 느낌이 옵니다. 왜 concat과 merge에 대해 알아보기 시작했는지 풀어보자면, 현재 RxSwift를 공부하면서 여러 퍼블리셔들을 한 동작 즉, 한 스트림에서 동작하게 하고 싶을때 concat과 merge라는 메서드를 호출하여 사용하곤 합니다. 두 기능..
-
NaverMap SDK - 경로선 & 화살표Library 2021. 8. 13. 09:24
안녕하세요. 그린입니다🟢 이번 포스팅에서는 NaverMap SDK를 이용해서 경로선과 화살표를 지도에 표시하는것에 대해 학습해보겠습니다🧑🏻💻 사전에 해야할것! https://navermaps.github.io/ios-map-sdk/guide-ko/1.html 요기 사이트를 접속해서 시작하기 가이드를 따라 하시면되요! 간단히 요약하면 1. 클라이언트 ID 발급 2. 의존성 추가 (코코아팟만 됩니다!) 3. 클라이언트 ID 지정 4. API 호출 5. 지도 표시 - 이 지도 표시는 위의 과정들을 마쳤다면 NMFMapView 라는 클래스를 지정하여 생성 사용하면 됩니다. 참고로 본 포스팅에서는 경로선과 화살표에 대해 기재하였기에 지도 및 좌표 객체와 옵션, 카메라, 마커 기타 인터페이스에 대한것은 해당 포스..
-
RxSwift - CombineLatest & withLatestFromRxSwift 2021. 8. 9. 21:25
안녕하세요 그린입니다🟢 이번 포스팅에서는 CombineLatest와 withLatestFrom에 대해 알아보겠습니다🙋🏻 CombineLatest - 두개의 Observable의 해당하는 각각의 이벤트가 발생할때 최신으로 수신된 이벤트를 묶어 전달 쉽게 코드를 통해서 이해하자면 아래와 같이 정의해볼 수 있다. let owner = Observable.from(["철수", "영희", "준석", "정인"]) let pet = Observable.from(["cat", "dog", "bird", "pig"]) Observable.combineLatest(owner, pet, resultSelector: { (owner: String, pet: String) return (owner, pet) } ) .subsc..
-
DI & SwinjectiOS 2021. 8. 3. 22:07
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Swinject에 대해 알아보겠습니다🧑🏻💻 Swinject? Swinject는 의존성 주입 프레임워크입니다. 한마디로 정의하기가 참 어려운데 그럼 먼저 의존성 주입이 어떤것인지 알아봐야겠죠? 의존성 주입? Dependency Injection이라고도 불리며 객체지향을 설계하고 코딩할때 중요한 부분입니다. 복잡한 개발을 하면 할수록 코드간 의존성이 생길수가 있습니다. 예를들어 간단히 아래와 같은 코드가 있다고 가정해봅시다. class Person { var action = Action() func startWalk() { self.action.walk() } } 이럴때 startWalk 함수 호출을 하기 위해서는 Action 클래스가 정의되야합니다. 이럴경우 A..
-
순회를 최소화한 알고리즘 (2)Algorithm 2021. 8. 1. 10:53
아래 문제는 코딜리티에서 제공하는 MissingInteger의 문제입니다🧑🏻💻 문제 제시 This is a demo task. Write a function: public func solution(_ A : inout [Int]) -> Int that, given an array A of N integers, returns the smallest positive integer (greater than 0) that does not occur in A. For example, given A = [1, 3, 6, 4, 1, 2], the function should return 5. Given A = [1, 2, 3], the function should return 4. Given A = [−1, −3]..
-
순회를 최소화한 알고리즘Algorithm 2021. 7. 24. 11:29
아래 문제는 코딜리티에서 제공하는 MaxCounters의 문제입니다🧑🏻💻 문제 제시 You are given N counters, initially set to 0, and you have two possible operations on them: increase(X) − counter X is increased by 1, max counter − all counters are set to the maximum value of any counter. A non-empty array A of M integers is given. This array represents consecutive operations: if A[K] = X, such that 1 ≤ X ≤ N, then operation K is..
-
Safe ArraySwift 2021. 7. 24. 09:19
안녕하세요. 그린입니다🟢 이번 포스팅에서는 배열에 대해 안전하게 조회하고 인덱스를 접근하는 방법에 대해 간략히 알아보겠습니다🙋🏻 배열에 대해 안전하게 접근하지 못할때 아래와 같은 에러를 런타임에서 많이 겪어보셨을겁니다. fatal error: Array index out of range 바로 접근한 배열의 인덱스가 범위 밖, 즉 없다는 에러 메시지입니다. if let등 아래와 같이 옵셔널바인딩을 안전하게 해줬다고 생각했는데 왜 이런 문제가 나타난걸까요? struct Person { let name = "bob" let age = 10 ... } let onePerson = Person() let twoPerson = Person() let people: [Person] = [onePerson, twoPe..
-
Test Doubles - fake, stub, mockiOS 2021. 7. 22. 08:19
안녕하세요. 그린입니다🟢 이번 포스팅에서는 Test Double의 3가지 종류에 대해 알아보고 구분해보겠습니다🧑🏻💻 우선 테스트 더블?? 테스트 더블은 자동화 테스트에서 실제와 유사하게 동작하면서 단순한 개체를 사용하여 동작시켜보거나 하는 테스트 과정에서 복잡성을 낮추고 독립된 코드를 테스트 검증할 수 있는 테스트 환경에서 이러한 테스트 개체가 사용되는것 입니다. 테스트 더블의 종류 1) fake - 상용되는 앱 로직 구현과 동일하게 가짜로 앱 로직 구현을 만들고 서버 DB대신 인메모리 DB를 정의하여 해당 정보로 테스트 (프로덕션 구현보다 좀 더 단순하게 만들 수 있음) - 예를들어 네트워크 통신을 하여 서버 DB를 받아 데이터를 뿌려주는 로직을 fake로는 네트워크 통신을 하지 않고 테스트 객체를 ..