firebase-modify라는 feature브랜치를 만들어줍니다 프로젝트에서는 modify 대신 change라는 용어를 사용하고 있는데, change라는 네이밍을 사용하여 코딩해주겠습니다 FirebaseManager에 change함수를 추가해줍니다 수정할 메모의 키값과 새로운 메모를 받는 함수입니다 class func change(key: String, to memo: Memo) { let rootRef = Database.database().reference() let memoRef = rootRef.child("memos").child(key) memoRef.setValue(memo.toDictionary()) } 수정을 누르면 이렇게 AlertViewController가 떠야하므로 textfiel..
firebase-delete라는 feature 브랜치를 하나 만들어줍니다 FirebaseManager 안에 delete라는 class fucntion을 만듭니다 class func delete(key: String) { let rootRef = Database.database().reference() let memoRef = rootRef.child("memos").child(key) memoRef.removeValue() } delete하려면 각 데이터(메모)의 key 값을 알고 있어야합니다 현재는 Memo를 Firebase에 추가할 때 firebase가 자동으로 key값(혹은 아이디 값) 을 만들어주게 설정되어있습니다 class func add(memo: Memo) { let rootRef = Dat..
[ 사전 준비 ] develop 브랜치를 base로 feature1과 feature2를 브랜치를 만들어줬습니다. 그리고 develop에서 commit 3개를 해줍니다. feature1은 merge 커밋내역을 확인할 용도로 쓸 브랜치입니다. feature1에서 commit 2개를 해줍니다. feature2은 rebase 커밋내역을 확인할 용도로 쓸 브랜치입니다. feature2에서 commit 2개를 해줍니다. [ Merge ] feature1로 develop을 머지해보겠습니다. 트리가 이렇게 그려집니다. 줄기가 2개! (current branch를 feature1로 골라줬어요) [ Rebase ] feature2로 develop을 rebase 해보겠습니다. 트리가 이렇게 그려집니다. 줄기가 1개! (cu..
일단 feature브랜치로 firebase-fetch를 하나 만들고 작업을 시작합니다 memos의 어떤 변화든 관찰하겠다(?) 하는 코드인데, let rootRef = Database.database().reference() rootRef.child("memos").observe(.value) { snapshot in let memosDic = snapshot.value as? [String: Any] ?? [:] for (key, value) in memosDic { print("key \(key) value\(value)") } } 딕셔너리를 출력해보면 key는 자동으로 만들어준 메모의 아이디 / value는 해당메모의 속성에 대한 딕셔너리이다 key -Lfu2XqePDtQA6KcyvJs value{..
FirebaseManager 클래스를 만들고 class fuction인 add를 만들어준다 import Foundation import Firebase class FirebaseManager { class func add(memo: Memo) { let rootRef = Database.database().reference() let memosRef = rootRef.child("memos") let memoRef = memosRef.childByAutoId() memoRef.setValue(memo.toDictionary()) } } Memo 구조체에 dictionary로 바꾸는 함수도 추가해준다 struct Memo { let title: String } extension Memo { func toD..
1. firebase-setup 이라는 feature 브랜치를 만든다 2. podfile에 pod 'Firebase/Core' 를 추가한다 실시간 데이터베이스를 사용할 것이므로 pod 'Firebase/Database' 이것도 추가하고 설치해준다 3. Firebase console 에 들어가서 프로젝트를 추가한다 4. Firebase에서 친절히 알려주는 대로 설정을 해준다 5. 앱이 콘솔에 추가되면 Realtime Database를 만들어준다 테스트 모드로 설정해서 읽기 쓰기 가능하게 해준다 --! 이것은 나중에 '규칙'에서 바꿀 수 있다
Firebase를 이용하여 메모를 추가하고 수정/삭제 할 수 있는 간단한 프로젝트를 해보자 : ) 플러스버튼을 눌러서 메모를 저장하고 왼쪽 스와이프로 메모를 수정, 오른쪽 스와이프로 삭제 하도록 프로젝트를 구성하자 이렇게 MVVM 구조로 프로젝트를 짰고 Rx를 사용하였다 : ) 소스코드는 깃헙 에서 볼 수 있다 + git도 같이 연습해보기 위해 master브랜치를 따서 develop브랜치를 만들었다 그 후, feature branch들로 firebase-setup / firebase-insert / firebase-delete / firebase-change 를 만들고 develop 브랜치에 merge해가면서 작업할 것이다 --!
textField.rx.text 하고 subscirbe하면 옵셔널 타입으로 String? 을 받아오는데, 옵셔널 말고 String으로 받아오고 싶으면 orEmpty를 쓰자 -! @IBOutlet weak var addMemoTextField: UITextField! addMemoTextField.rx.text.subscribe { print($0) }.disposed(by: bag) addMemoTextField.rx.text.orEmpty.subscribe { print($0) }.disposed(by: bag) * 결과 next(Optional("ㅇ")) next(ㅇ) * 결과 next(Optional("") next()
네비게이션 컨트롤러의 Navigation bar를 클릭한다 - 일단 Navigation bar의 뿌연 효과를 없애주기 위해 Translucent 를 체크 해지한다 - Prefers Large Titles를 체크하고 large title text attributes를 설정한다 - title text attributes도 large title text attributes와 동일하게 설정해준다 (밑의 사진처럼 테이블 뷰가 스크롤업되면 작은 title로 나오기 때문) ================== iOS 13 부터 변화가 있습니다 ==================== https://forums.developer.apple.com/thread/122100 barTintColor not working corre..
- Total
- Today
- Yesterday
- METAL
- cocoapod
- 플러터 싱글톤
- ribs
- 장고 URL querystring
- Watch App for iOS App vs Watch App
- flutter build mode
- 구글 Geocoding API
- Flutter getter setter
- flutter 앱 출시
- Python Type Hint
- flutter deep link
- Flutter 로딩
- Flutter Text Gradient
- flutter dynamic link
- Django FCM
- DRF APIException
- Dart Factory
- Django Heroku Scheduler
- SerializerMethodField
- 장고 Custom Management Command
- Flutter Spacer
- PencilKit
- 플러터 얼럿
- Flutter Clipboard
- drf custom error
- ipad multitasking
- github actions
- Sketch 누끼
- Django Firebase Cloud Messaging
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |