일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 코테
- IOS
- 오픈채팅방
- MainScheduler.Instance
- 청년취업사관학교
- 등굣길
- rxswift
- DependencyInjection
- GCD
- RaceCondition
- combine
- 명품cppProgramming c++
- baseviewcontroller
- SwiftUI
- gitflow
- DiffableDataSource
- MethodSwilzzling
- MainScheduler.asyncInstance
- leetcode
- data_structure
- 프로그래머스
- CoreBluetooth
- DynamicMemberLookup
- swift
- MainScheduler
- SeSAC
- SRP
- Realm
- DispatchQueue
- cleanarchitecture
- Today
- Total
목록전체 글 (74)
Do.
Reference Expert Swift by raywenderlich Tutorial Team 커링(Currying) func aHigherOrderFunction(_ operation: (Int) -> ()) { let numbers = 1...10 numbers.forEach(operation) } func someOperation(_ p1: Int, _ p2: String) { print("number is : \(p1), and String is: \(p2)") } 위와 같은 함수가 있을 때 aHigherOrderFunction은 정수를 파라메터로 가지고 리턴타입이 Void인 함수를 인자로 받는다. someOperation은 정수와 문자열을 인자로 하는 함수로 일반적으로는 요구하는 인자가 일치하..
서론(무시해도 됨) Swift Foundation에 있는 XML Parser는 말 그대로 XML parsing이 가능한 클래스이다. 공공 데이터 포털의 REST API는 JSON으로 제공하는 것도 있지만 XML로 제공하는게 더 많은 것 같다.(체감) JSON의 경우 JSON Encoder와 Decoder를 이용하면 정말 손쉽고 간편하게 사용할 수 있는데(URL Session과 함께) XMLParser 클래스는 좀 순서가 다르다 XMLParser 클래스를 생성하고 .parse() 메소드로 파싱을 시작하는데 데이터를 분석하는 것은 Delegate를 통해서 한다. XML Parser의 사용법을 알아보자 사용법 UIKit 기준으로 설명 func updateBusInformation(_ requestModel: ..
Swift는 몇가지 유용한 고차함수를 라이브러리 차원에서 제공하는데 흔히들 써봤을 것이다. 그것들 중 일부가 아래와 같다. Map Split CompactMap FlatMap Filter Reduce Sorted Map, Split Array.map(_:)은 배열의 모든 요소에 대해 작업하고 리턴값으로 동일한 크기의 새 배열을 반환한다. 백준에서 입력 값을 받을 때 참 많이 유용한데 백준 1085문제의 경우 입력 값으로 4개의 정수가 스페이스 문자로 구분되어 들어온다. 6 2 10 3 문제를 풀때 이를 스페이스 문자로 구분해서 배열로 저장하고 문자로 들어온 것이기 때문에 정수로 변경해야 하는데 map을 사용하지 않으면 let input = readLine()!.split(separator: " ") va..
객체 지향 프로그래밍을 하다보면 클래스와 오브젝트(객체)라는 단어를 많이 사용하게 되는데 분명히 차이가 있기 때문에 구분지어서 호칭해야 한다. 내용은 별거 없지만 용어는 올바르게 쓰도록 하자 class 고양이 { ... } 위 코드는 Cat이라는 클래스를 정의하고 있다. 객체는 클래스를 인스터스화 할 때 얻는 것이다. let 메밀 = 고양이() 메밀 변수는 Cat 클래스의 객체가 포함된다. 이는 메밀 변수에 고양이 클래스의 인스턴스가 포함되어 있다는 것을 의미하고 즉 객체와 인스턴스는 같은 용어라는 것을 의미한다. 고양이 클래스의 인스턴스가 메밀 변수의 타입이라고 볼 수 있다. class 고양이 { var 무늬: String var 몸무게: Float func punch() { .. } } let 메밀 ..
Swift에서 Float나 Double을 Int로 바꾸는 방법은 굉장히 쉬운데 Int 자료형의 초기화 메소드 인자로 Float 또는 Double을 받아 Int로 생성하는 기능이 있다. 그냥 단순하게 let pi = 3.14 let rtoi = Int(pi) // Int 3 이렇게만 해줘도 정수로 변환 된다. 근데 이 방법을 얘기 하려고 했던 것은 아니고 일반적인 상황에서는 전혀 문제 없는 방법이지만 한가지 실패할 가능성이 있는데 바로 오버플로우이다. 만약에 let dNumber = Double(Int.max) + 1 위와 같은 값이 있다고 했을 때 64비트를 넘어서는 값이 저장이 되었는데 이를 Int(dNumber) Int 초기화를 통해 변환하고자 하면 에러가 발생한다. Swift/arm64-apple-..

Queue를 구현하는 방법은 일반적으로 4가지가 있다. 1. 배열을 이용하는 방법 2. 이중 연결 목록을 이용하는 방법 3. 링 버퍼를 이용하는 방법 4. 이중 스택을 이용하는 방법 이 중에서 배열을 이용하는 방법의 경우 데이터 삽입의 경우는 O(1)이나 데이터를 출력할 때는 앞에서 부터 데이터가 제거되므로 배열이 공간을 재 배열하는 만큼의 비용이 발생한다. Swift에서는 그 동작이 O(n)이다. 또 이중 연결 목록을 이용하는 방법은 노드 하나당 가지는 데이터가 value, next, previous 3개의 속성을 가지고 있기도 하고 아무래도 직관적이지도 않다. 데이터의 삽입, 출력에서 이론상 성능은 O(1)이지만 높은 오버헤드를 가지고 있다. 따라서 4가지 방법 중 가장 좋은 성능을 가지고 있고 구현..
특정 객체를 배열로 저장하는 변수를 만들었을 때 class MyObject { let name: String let isEnable: Bool init(name: String, isEnable: Bool) { self.name = name self.isEnable = isEnable } } struct MyObjectStore { var store: [MyObject] = [] var isEmpty: Bool { store.isEmpty } } struct Main { var myObjectStore = MyObjectStore() init() { ... } } 위와 같은 코드에서 만약 myObjectStore.store.firstIndex를 사용하고 싶은데 firstIndex(of:)가 없고 first..

Part1: https://blog.naver.com/raphaelra44/222460995852 이미지 썸네일 삭제 Swift - JSON Encoding과 Decoding - Part1 만드는 어플에 JSON 데이터를 파싱해야 하는데 이게 눈으로만 보고 할려고 하니까 너무 어려워서 정리... blog.naver.com 오른쪽 정렬오른쪽 정렬왼쪽 정렬왼쪽 정렬가운데 정렬가운데 정렬 삭제삭제 Part2: https://blog.naver.com/raphaelra44/222461230206 이미지 썸네일 삭제 Swift - JSON Encoding과 Decoding - Part2 Part1 주소: https://blog.naver.com/raphaelra44/222460995852 길어서 파트를 나눈다기 ..