이렇게 준비를 한다..! 1. 뷰컨에 TableView를 올려주고 2. Tableview에 TableViewCell을 올려주고 3. TableViewCell의 identifier를 NameCell 로 설정해준다 그리고 RxTableViewController에 RxSwift와 RxCocoa를 import 하고 bind할 준비를 해준다 >> 총 4가지 방법으로 tableView를 그릴 수 있다 https://github.com/RxSwiftCommunity/RxDataSources 를 보면 다음과 같이 나와있다 Bind the data to the tableView/collectionView using one of: rx.items(dataSource:protocol)rx.items(cellIdentifie..
[1] Delegate Proxy 개념Rxswift의 DelegateProxy.swift와 DelegateProxyType.swift 이 두 파일은 delegate를 사용하는 프레임워크랑 Rxswift의 다리역할을 해주는 파일이다 (즉 delegate를 사용하는 친구들을 Rx에서도 편하게 활용할 수 있도록 연결해준다) DelegateProxy Object는 fake delegate object를 만드는데, 이 fake delegate object은 수신된 모든 데이터를 전용 observables로 프록시한다(표현한다?!) ==> 설명은 너무 어렵다 모호하다.. 예제로 이해하자 delegate를 가지고 있는 객체 중, MKMapView 를 살펴본다 open class MKMapView : UIView, N..
@markdown 티스토리에 마크다운을 적용해보았으나 예쁘지 않다 😧 코드 색깔이 살지 않는다 😔 예쁘게 보려면 깃헙으로~!~!~!~!~!~!~! [요기요기](https://github.com/eunjin3786/iOSStudy/blob/master/프로토콜.md ) 눌러보아요 # Protocol ## 1. 프로토콜 이란 프로토콜은 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진. 구조체, 클래스, 열거형 은 프로토콜을 채택해서 프로토콜의 요구사항을 실제로 구현한다 프로토콜의 요구사항을 모두 구현한 타입을 '해당 프로토콜을 conform(준수)한다' 라고 표현한다 ```swiftprotocol 프르토콜이름 { 프로토콜 정의 }``` ### 1.1 프로퍼티 요구사항 var키워드를 사용..
브랜치 관리 전략 중 하나인 'git flow' 5가지 타입의 브랜치를 sourceTree-gitflow 에서 편하게 관리해준다 feature - feature브랜치를 따서 각 기능을 작업한 후, PR을 보낸다. develop에 merge되면 delete시키는 브랜치 develop - 승인받은 feature들만 merge되기 때문에 안전하고 굵직한 코드들이 담긴 브랜치 release - develop에서 바로 master로 가는 것이 아니다. 중간다리 역할을 해주는 브랜치 ( develop -> release -> master ) hotfixes - 급히 수정해서 출시해야할때 사용하는 브랜치 master - 출시용 브랜치 * 설명 처음에는 master와 develop 브랜치가 존재합니다. 물론 devel..
첫번째 CaseIterable 프로토콜 >> CaseIterable 프로코콜을 conform 하기 전 ( 따르기전 ) 모든 메뉴를 담은 리스트를 만들고 싶다면 원소하나씩 넣어줘야한다 enum Menu:String{ case scone = "스콘" case bagel = "베이글" case ciabatta = "치아바타"} struct MenuListViewModel { let menus:[Menu] = [.scone,.bagel,.ciabatta]} >> CaseIterable 프로코콜을 conform 한다면 allCases로 enum안에 있는 모든 케이스들을 담은 배열을 얻을 수 있다 menus의 타입은 [Menu] 이다 : ) enum Menu:String, CaseIterable{ case scon..
다음과 같은 JSON에서 main 안에 있는 temp, temp_min, temp_max와 name을 가져오고 싶을 때 JSON형식과 똑같은 형식으로 이름을 지정해줘야 에러없이 디코드 된다 struct WeatherViewModel:Decodable { let name: String let main: TemperatureViewModel } struct TemperatureViewModel: Decodable{ let temp: Double let temp_min: Double let temp_max: Double } let weatherVM = try? JSONDecoder().decode(WeatherViewModel.self, from: data) 하지만 프로퍼티 이름을 다르게 해주고 싶을 때 가 ..
처음에 이 문제를 만났을 때는 public func solution(_ A : inout [Int]) -> Int { var left = 0 var right = 0 var difference = 0 for (index,item) in A.enumerated(){ if index == A.count - 1{break} left += item right = A[index+1...A.count-1].reduce(0, +) if index == 0{ difference = abs(left-right) } else if abs(left-right) < difference{ difference = abs(left-right) } } return difference } 이렇게 풀었다 그랬더니 시간복잡도가 O(N *..
XOR ( ^ ) 은 두 값을 이진수로 바꾼 후, 두 값의 각 자리수를 비교해서 같으면 0, 다르면 1 을 계산하는 비트 연산자이다 : ) ex) 3 = 0011 5 = 0101 1 = 0001 3^5 = 0110 ^ 연산자에는 재밌는 속성이 있다 3^5^5 = 0011 (십진수:3) 3^5^5^3 = 0000 3^3 = 0000 3^3^5 = 0101 (십진수: 5) 3^5^3 = 0101 (십진수: 5) 3^3^5^1 = 0100 3^3^5^1^1 = 0101 (십진수:5) ✅ 같은 수를 두번 xor연산하면 없어진다 ✅ 근데 같은 수 두번의 위치는 상관없다 ( 두 값이 서로 붙어있든, 떨어져있든 ) => 나눗셈과 비슷하다 이런 xor연산자의 속성을 활용하면 codility - OddOccurrence..
- Total
- Today
- Yesterday
- Python Type Hint
- drf custom error
- cocoapod
- Django Firebase Cloud Messaging
- SerializerMethodField
- flutter dynamic link
- Sketch 누끼
- ipad multitasking
- Flutter Text Gradient
- Flutter Clipboard
- ribs
- 구글 Geocoding API
- Django Heroku Scheduler
- DRF APIException
- 장고 Custom Management Command
- flutter build mode
- Flutter Spacer
- flutter 앱 출시
- Flutter 로딩
- 장고 URL querystring
- 플러터 싱글톤
- flutter deep link
- Django FCM
- Watch App for iOS App vs Watch App
- METAL
- PencilKit
- Dart Factory
- 플러터 얼럿
- github actions
- Flutter getter setter
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |