오늘은 이어서 Combining 연산자에 대해 공부해 보겠습니다. Prepending upstream에서 방출한 값 앞에 추가해서 보내는 용도로 사용합니다. prepend(Output) publisher에서 방출 되는 이벤트 이전에 값을 넣어줄 때 사용합니다. var subscriptions = Set() example(of: "prepend(output)") { let publisher = [3, 4].publisher publisher .prepend(1, 2) .sink(receiveValue: { print($0) }) .store(in: &subscriptions) } /* ——— Example of: prepend(output) ——— 1 2 3 4 */ 아래처럼 음수 를 추가해도 순서대로 ..
https://school.programmers.co.kr/learn/courses/30/lessons/12932 문제 사진 내 풀이 1. func solution(_ n:Int64) -> [Int] { var arr = String(n).map { $0 } var resultStr: [String] = [] var resultInt: [Int] = [] for i in arr { resultStr.append(String(i)) } for _ in resultStr { resultInt.append(Int(resultStr.popLast()!)!) } return resultInt } 비효율적이라 생각한다. 빈배열과 for문을 두번 써야한다는점과 가독성 측면에서도 별로여서 아래처럼 리팩토링을 해봤다. ..
이전 챕터와 비슷하게 filtering 연산자에 대해 공부해 보려 합니다. Filtering basics filter() Swift에 있는 filter와 같습니다. (조건문과 성립하는것만 걸러냄) var subscriptions = Set() example(of: "filter") { // 1. 1~10까지 이벤트 방출 let numbers = (1...10).publisher // 2. filter 연산자로, 3의 배수만 걸러냄 numbers .filter { $0.isMultiple(of: 3) } // isMultiple of의 지정된 숫자의 배수이면 true 반환 .sink(receiveValue: { num in print("\(num) 은 3의 배수") }) .store(in: &subscri..
각 Operator는 publisher를 반환합니다. publisher는 upstream 이벤트를 받고 조작합니다. 그러고나서, 조작된 이벤트들을 사용자에게 downstream으로 보냅니다. Collecting Values collect() 각각의 value들을 한 배열안에 넣습니다. 1. collect() 안썼을시 var subscriptions = Set() example(of: "collect") { ["A", "B", "C", "D", "E"].publisher .sink(receiveCompletion: { print($0) }, receiveValue: { print($0) }) .store(in: &subscriptions) } /* ——— Example of: collect ——— A B ..
Publishers Publisher 가 방출하는 3가지 타입 Publisher의 제네릭 output 타입의 값 successful completion Publisher의 실패 타입의 completion error Publisher는 0개 이상의 출력 값을 방출할 수 있고, 성공 또는 실패로 완료되면 다른 이벤트를 방출하지 않습니다. Publisher 의 역할 delegate패턴을 사용하거나 completion callback을 주입하는 대신 Publisher를 사용할 수 있습니다. Publisher의 가장 좋은 기능 중 하나는 오류 처리가 내장되어 있다는 것입니다. Publisher 프로토콜은 두 가지 타입에 대해 일반적입니다. Output은 Publisher의 출력 값의 타입 입니다. Int Publ..
오늘은 fatal Error에 대해 공부해보려고 합니다. 예를들어 정해진 index보다 초과해서 접근하려는 경우 fatal error가 발생하기도 하고 이외에도 여러가지가 있는데요. 바로 공식문서 부터 보겠습니다. Fatal Error 무조건 실행을 중지하고 메시지를 출력합니다. 정의 func fatalError( _ message: @autoclosure () -> String = String(), file: StaticString = #file, line: UInt = #line ) -> Never (으.. Never는 또 뭐야..) Never는 값이 없는 타입을 말한다네요. (정상적으로 리턴하지 않는 함수의 리턴 타입) 즉, fataError는 메소드에서 리턴할 것이 없을때, 생각지 못한 에러가 ..
기본연산자 외에 Swift에서는 더 복잡한 값을 조작할 수 있는 고급연산자를 제공합니다. 비트 연산자 (Bitwise Operators) 비트연산자를 사용하면 데이터 구조 내에서 개별 원시 데이터 비트를 조작할 수 있습니다. 그래픽 프로그래밍, 디바이스 드라이버 생성과 같은 Low-level 프로그래밍에 자주 사용됩니다. Swift는 C에서의 모든 비트연산자를 지원합니다. 비트 NOT 연산자 (Bitwise NOT operator) ( ~ ) 키워드를 사용하여, 비트 값(2진수)을 반대로 바꿔줍니다. 예시 let initialBits: UInt8 = 0b00001111 // 15 let invertedBits = ~initialBits // 240 // 1110000 (2진수) -> 240 (10진수) ..
다른소스 파일 및 모듈의 코드에서, 코드의 일부에 대한 접근을 제한 하는걸 말합니다. 객체지향에서 중요한 개념인 *은닉화를 구현하기 위해 쓰입니다. 은닉화 객체 외부에서 객체 내부의 접근을 제한해 , 데이터 수정을 방지 모듈과 소스파일 (Modules and Source Files) 모듈 코드를 배포하는 단일 단위 하나의 프레임워크 즉, import 해오는것 예를들어 import Foundation import Alamofire 이런게 모듈입니다. 소스파일 모듈안에 있는 소스파일을 의미합니다. 각 소스파일에 여러 특정 타입을 선언해 사용할 수 있습니다. 접근레벨 (Access Levels) 5개의 접근레벨을 제공하며 아래와 같습니다. open & public 다른 모듈에서도 사용이 가능합니다. 둘의 차이..
오늘은 Scroll Indicator를 최상단으로 이동하는 걸 블로깅 해보려고 합니다. 예를들어 앱 내에서 상품을 검색 할때 이런 상황이 있겠죠. 상품검색 > 아래로 쭉 내리면서 상품을 보다가 > 새로운 상품검색 이럴때 새 상품을 검색했기 때문에 사용자가 보는화면이 다시 최상단으로 올라가야하겠죠? 생각보다 간단합니다 ! CollectionView에서는 아래의 인스턴스 메서드를 사용하면 돼요. TableView 에서는 scrollToRow(at:at:animated:) 를 사용하시면 됩니다. 동작 방식은 똑같습니다! 첫번째 파라미터 (indexPath): 해당 item 또는 section 위치 지정 두번째 파라미터 (scrollPosition): scroll의 위치 지정 세번째 파라미터 (animated)..
오늘은 안전하게 배열을 조회하는 방법에 대해 알아 보려고 합니다. 아래와 같이 배열을 조회하다 엉뚱한 index에 접근하게 되면, 이런 에러를 많이 보실겁니다. let arr = [1, 2, 3] for index in 0...10 { print(arr[index]) // Fatal error: Index out of range } Fatal error: Index out of range Array(배열)의 경우에는 index를 접근해서 가져오는 값이 Optional이 아니라 guard를 쓸 수도 없어 index가 유효하지 않을 경우 꼼짝없이 앱이 다운되어 버립니다. 이런 오류를 방지하기 위해 extension을 이용해 아래와 같은 코드를 적용해줍니다. extension Array { subscript ..
- Total
- Today
- Yesterday
- Swift Leetcode
- RIBs tutorial
- CS 네트워크
- Swift Error Handling
- Swift joined
- swift reduce
- Swift final
- Swift 알고리즘
- iOS error
- Swift RIBs
- swift programmers
- swift protocol
- RTCCameraVideoCapturer
- Swift ModernRIBs
- Swift 내림차순
- 원티드 프리온보딩
- Class
- removeLast()
- Swift
- Swift init
- swift (programmers)
- swift 고차함수
- Swift 프로그래머스
- Combine: Asynchronous Programming with Swift
- Swift joined()
- Swift 프로퍼티
- swift property
- Swift inout
- ios
- 2023년 회고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |