Programming/Swift
-
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 키워드를 사용해줘야겠죠? 여기까지는 이전 포스팅에서 공부한 내용입니다. 그리..
-
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를 이용하여 에러를 발생시키지 않는 방법 여담으로..
-
Swift - Error Handling 기초Programming/Swift 2022. 3. 24. 20:14
안녕하세요! BeePeach입니다 :) 에러가 발생할 때 매번 우리가 만든 앱이 종료된다면 별점 테러를 받고 사용자들이 다 떠나가겠죠?? 프로젝트를 진행하는데 있어서 에러 처리는 매우 중요한 부분 중에 하나입니다. 그래서 오늘은 Error에 대해서 공부를 해보도록 하겠습니다. 참고로 이 포스팅에서 다룰 내용은 Runtime에 발생하는 에러에 관한 내용입니다. Compiletime에 발생하는 에러는 컴파일시점에 에러에 관해 알 수 있기 때문에 비교적 쉽게 처리할 수 있습니다. 어떠한 작업들은 항상 성공한다는 보장이 없습니다. 예를 들어서 disk에서 파일을 가져오는 작업에서 여러가지 실패할 수 있는 상황들이 존재합니다. 해당 path에 파일이 존재하지 않는 경우, 파일 읽기 권한이 없는 경우, 파일을 원하..
-
Swift - UserDefaults에 customType 저장하기Programming/Swift 2022. 3. 1. 22:32
안녕하세요 BeePeach입니다 :) UserDefaults를 사용하다보면 String, Int, Bool, Data 타입 이외의 타입을 저장하고 싶을 때가 있습니다. Custom Type이나 Array, Tuple등을 저장하고 싶은데 저장하려고 하면 에러가 발생하는데요. 오늘은 UserDefault에 원하는 데이터를 저장하는 방법에 대해서 공부해보도록 하겠습니다. UserDefaluts 저장하기 화면 구성은 이렇게 되어있습니다. 맨 위의 저장버튼을 누르면 UserDefault에 Person구조체를 저장해보도록 하겠습니다. 이렇게 실행해보면 에러가 발생합니다. Non-property-list object를 UserDefaults에 저장하려고 한다고 나오네요. 그럼 이 문제를 어떻게 해결할 수 있을까요??..
-
Swift - reduce(_:_:)와 reduce(into:_:)Programming/Swift 2022. 1. 29. 15:39
안녕하세요 BeePeach입니다 :> 오늘 공부해볼 내용은 reduce 메서드입니다. reduce 메서드는 Container의 요소를 결합하는 작업을 수행할 때 사용합니다. 그럼 reduce 메서드를 사용하는 방법과 reduce(_:_:)와 reduce(into:_:)는 어떤 차이를 가지는지 같이 공부해보도록 하겠습니다. reduce(_:_:) 선언 부분을 보면 Generic function인것을 확인할 수 있습니다. 타입 파라미터로 Result가 선언되어 있네요. 타입을 확인하기 어렵게 되어있는데 찬찬히 하나씩 본다면 어렵지 않습니다. 첫 번째 파라미터는 initialResult 즉, 초기값이 전달됩니다. 뜬금없이 초기값이 뭔데??라고 할 수 있는데 예제를 보시게 되면 바로 이해하실 수 있습니다. 두 ..
-
Swift - Generic Type ConstraintProgramming/Swift 2022. 1. 25. 17:34
안녕하세요 BeePeach입니다 :) 오늘 공부해볼 내용은 Generic의 Type Constraint입니다. 지금까지 우리가 generic의 타입 파라미터를 사용할 때 모든 타입을 사용할 수 있었습니다. 하지만 어떤 기능만 가진 타입들만 오게하고싶거나 특정 타입으로 선언하지 않으면 에러가 발생하는 경우가 있습니다. 이렇게 타입 파라미터에 모든 타입이 아니라 몇몇 타입들만 오게 하는 기능이 바로 Type Constraint(타입 제약)입니다. Type Constraint Generic Type, Generic Funtuion, Associated Type에서 타입 파라미터를 사용할 때 타입 파라미터가 특정 class, protocol을 상속하게 하면 type constraint를 사용할 수 있습니다. C..