Programming
-
Swift - Result TypeProgramming/Swift 2022. 3. 30. 20:07
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 Swift5부터 새롭게 추가된 Error handling 방식인 Result입니다. (작성하다가 다 날아가서 다시 작성하는 ㅠㅠ) Result를 이해하기 위해서는 Enumeration과 Associated Value 그리고 Generic을 정확하게 이해하고 있어야 합니다. 기존에 사용하던 throws는 이 함수, 메서드, 클로저, 생성자가 Error를 던질 수 있다는 것을 나타냈지만 어떤 형식의 Error가 전달될지는 알려주지 않았습니다. 그래서 do-catch문에서 Error를 처리할 때 패턴 매칭을 이용하거나 타입 캐스팅을 하는 방식으로 Error를 특정한 뒤에 처리해야 했습니다. 이 방식이 완전 나쁜 방식은 아니지만 문제는 컴파일 타임에 형..
-
Swift - Error Handling(do-catch, try?, try!)Programming/Swift 2022. 3. 29. 23:12
안녕하세요 BeePeach입니다. 오늘은 Error Handling 방법 중에 2, 3번째에 해당하는 do-catch와 Optional try에 대해서 공부해보도록 하겠습니다. try와 do-catch 일반적인 try는 이전 포스팅에서 사용해봤습니다. 그냥 try를 사용했더니 Error를 handling하고 있지 않다고 컴파일 에러가 나서 throws를 추가해 문제를 해결했습니다. 이 방법은 4가지 방법중 첫 번째 방법인 propagating error입니다. throws를 사용하지않고 try를 사용하는 방법은 do-catch문과 함께 사용하는 것입니다. do-catch do-catch문은 Error 예외처리를 할 때 많이 사용하는 방법입니다. do 안에서 try와 함께 Error를 throw하는 코드를..
-
Swift - Error Handling (throws와 rethrows)Programming/Swift 2022. 3. 27. 12:36
안녕하세요 BeePeach입니다 :) 오늘은 이전에 공부했던 throws와 헷갈리기 쉬운 rethrows에 대해서 공부해보도록 하겠습니다. throws throws 키워드 말고 rethrows라는 키워드도 존재합니다. rethrows는 파라미터로 throws를 포함하는 함수를 받을 때 사용하는 키워드입니다. 중요한 것은 '파라미터로 throws 함수를 받는다'라는 것입니다. 그냥 외부에 존재하는 throws 함수를 사용하는 것과 구별해야 합니다. MyError를 정의해주고 someErrorFunction을 정의했습니다. 이 함수는 단순하게 Error를 던지는 함수입니다. 내부에서 Error를 throw 하고 있으니까 throws 키워드를 사용해줘야겠죠? 여기까지는 이전 포스팅에서 공부한 내용입니다. 그리..
-
RxSwift - Subject와 RelayProgramming/RxSwift 2022. 3. 25. 16:48
안녕하세요 BeePeach입니다. 오늘 공부해볼 내용은 Subject와 Relay입니다. RxSwift의 기본개념에서 알아본 것처럼 Observable은 단방향입니다. 이벤트를 방출할 수 있지만 받지는 못합니다. 반대로 Observer는 이벤트를 받을 수는 있지만 방출할 수는 없습니다. 앱을 개발할때 Observable이 값을 방출하는 중에 Observer에게 이전에 정의해놓지 않은 새로운 값을 방출해야 하는 경우가 매우 많습니다. 그런데 Observable은 앞에서 말했듯이 read only이기 때문에 새로운 값을 방출하도록 할 수 없습니다. create, just, of 등 오퍼레이터를 사용할때 미리 정의해놓은 값만 방출합니다. 이럴 때 Observable과 Observer의 특성을 모두 가지는 Su..
-
Swift - Error Handling(throws)Programming/Swift 2022. 3. 25. 15:28
안녕하세요 BeePeach입니다 :) 오늘은 Error Handling 중에서 throws에 대해서 조금 자세히 공부해보도록 하겠습니다. Error가 throw 됐다면 반드시 이 Error를 어떻게 다룰지에 대한 코드를 작성해야 합니다. 다른 대안으로 시도해본다던지 사용자에게 실패에 대한 정보를 준다던지와 같이 말이죠. 이러한 것을 Error를 handling한다고 표현합니다. 에러를 다룬다?? 해석하기 애매하니 에러를 핸들링한다라고 표현하겠습니다. Swift에서 에러를 다루는 방법에는 4가지가 있습니다. 1. Error를 propagate(전파)하는 방법 2. do-catch문을 사용하는 방법 3. Optional try를 사용하는 방법 4. assert를 이용하여 에러를 발생시키지 않는 방법 여담으로..
-
RxSwift - TraitProgramming/RxSwift 2022. 3. 24. 21:07
안녕하세요 BeePeach입니다 :) 오늘은 Trait에 대해서 공부해보도록 하겠습니다. Trait는 이전에 우리가 공부한 기본적인 Observable보다 좀 더 특정된 기능에 집중한 Observable입니다. Trait들도 결국에는 Observable입니다. 그래서 Trait를 쓰는 코드에는 우리가 공부했던 Observable을 사용해도 아무런 문제가 없습니다. 하지만 Trait를 사용하는 이유가 존재하겠죠? Trait를 이용하면 간편하고 직관적인 코드를 만들 수 있습니다. 오늘은 RxSwift에서 제공하는 Trait에 대해서 공부해볼 예정입니다. 그 이후 RxCocoa를 공부하고 난 뒤에 RxCocoa에서 제공하는 또 다른 여러 Trait를 살펴보도록 하겠습니다. 일반적으로 RxSwift에서 제공하는..
-
Swift - Error Handling 기초Programming/Swift 2022. 3. 24. 20:14
안녕하세요! BeePeach입니다 :) 에러가 발생할 때 매번 우리가 만든 앱이 종료된다면 별점 테러를 받고 사용자들이 다 떠나가겠죠?? 프로젝트를 진행하는데 있어서 에러 처리는 매우 중요한 부분 중에 하나입니다. 그래서 오늘은 Error에 대해서 공부를 해보도록 하겠습니다. 참고로 이 포스팅에서 다룰 내용은 Runtime에 발생하는 에러에 관한 내용입니다. Compiletime에 발생하는 에러는 컴파일시점에 에러에 관해 알 수 있기 때문에 비교적 쉽게 처리할 수 있습니다. 어떠한 작업들은 항상 성공한다는 보장이 없습니다. 예를 들어서 disk에서 파일을 가져오는 작업에서 여러가지 실패할 수 있는 상황들이 존재합니다. 해당 path에 파일이 존재하지 않는 경우, 파일 읽기 권한이 없는 경우, 파일을 원하..
-
RxSwift - Observable factoryProgramming/RxSwift 2022. 3. 21. 18:31
안녕하세요 BeePeach입니다 :) 오늘은 Observable factory에 대해서 공부해보도록 하겠습니다. 사실 이 부분은 이후에 포스팅할 Operator부분에서 다뤄도 되는 부분인데 먼저 다뤄보도록 하겠습니다. Observable factory 란 Observable에서 제공하는 deferred 오퍼레이터를 이용해서 조건에 따라 구독자마다 새로운 Observable을 생성하는 것을 말합니다. Factory 즉, 공장이라는 것을 떠올려보면 Observable을 찍어내는 공장을 생각하면 됩니다. 주의해야하는 것은 조건에 따라 다른 이벤트를 방출하는 게 아니라 다른 Observable을 생성한다는것입니다. 말로만해서는 이해가 안가니까 찬찬히 살펴보도록 하겠습니다. deffered 오퍼레이터를 살펴보면 ..