ios
-
Multiple Firebase EnvironmentsiOS 2021. 8. 21. 00:06
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ๋ค์ค ํ์ด์ด๋ฒ ์ด์ค ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํฌ์คํ ํ๊ฒ ์ต๋๋ค. ๋ค์ค ํ์ด์ด๋ฒ ์ด์ค ํ๊ฒฝ ๊ตฌ์ถ์ด ์ ํ์ํ ๊น์? ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด Prod ํ๊ฒฝ๊ณผ Dev ํ๊ฒฝ์์ ๋ค๋ฅธ DB๋ฅผ ๋ฐ๋ผ๋ณผ๋๊ฐ ์์ต๋๋ค. ๋ง์ฝ ์ค์ ํ๋ก๋์ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ํ ์คํธ๋ฅผ ์งํํ๋ฉด DB ๊ฐ์ด ๋ฐ๋๊ฒ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๊น Dev ํ์ด์ด๋ฒ ์ด์ค DB ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ๋ฌ๋๊น ๊ทธ๋ฐ Dev ํ์ด์ด๋ฒ ์ด์ค ํ๊ฒฝ์ Xcode์์ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์ค ํ์ด์ด๋ฒ ์ด์ค ํ๊ฒฝ ๊ตฌ์ถ์ด ํ์ํฉ๋๋ค! ์ ๊ทธ๋ผ ์ ํ์ด์ด๋ฒ ์ด์ค ํ๊ฒฝ ๊ตฌ์ถ์ด ํ์ํ์ง ์์๋ณด์๋๋ฐ์! ๊ทธ๋ผ ์ด๋ป๊ฒํ๋ฉด ๊ตฌ์ถํ ์ ์์๊น ์์๋ด ์๋ค. ๋ค์ค ํ์ด์ด๋ฒ ์ด์ค ํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ ์๊ฐ๋ณด๋ค ๋๊ฒ๋๊ฒ ๊ฐ๋จํฉ๋๋ค! 1. Firebase์์ ๊ฐ๊ฐ์ SD..
-
concat & mergeRxSwift 2021. 8. 16. 14:40
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ concat๊ณผ merge์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ผ๋จ ๋ ๋จ์ด์ ์ฌ์ ์ ์ธ ์๋ฏธ๋ถํฐ ์ดํด๋ณด๋ฉด, concat์ concatenate์ ์ฝ์๋ก ์ฐ์ค์, ์ฌ์ฌ์ ์๋ค ๋ผ๋ ๊ทธ๋ฐ ๋์์ค์ ๋ป์ ๊ฐ์ง๊ณ ์์ต๋๋ค. merge๋ ํฉ๋ณ, ํฉ์น๋ค, ์ตํฉํ๋ค, ์ด์ฐ์ด๋ฆฌ์ง๋ค ๋ฑ๋ฑ์ ๋์์ค์ ๋ป์ด ์๋ค์! ๋ค๋ค merge๋ ๊น์ ์ฌ์ฉํ๋ ๋ญํ๋ ๋ค์ํ๊ฒ ๋ค์ด๋ณด์ จ์ํ ๋ฐ concat๋ ์ฌ์ ์ ์๋ฏธ๋ฅผ ๋ณด๋ฉด ๋์ผํ ๊ธฐ๋ฅ์ ํด์ค๊ฑฐ๋ผ๋ ๋๋์ด ์ต๋๋ค. ์ concat๊ณผ merge์ ๋ํด ์์๋ณด๊ธฐ ์์ํ๋์ง ํ์ด๋ณด์๋ฉด, ํ์ฌ RxSwift๋ฅผ ๊ณต๋ถํ๋ฉด์ ์ฌ๋ฌ ํผ๋ธ๋ฆฌ์ ๋ค์ ํ ๋์ ์ฆ, ํ ์คํธ๋ฆผ์์ ๋์ํ๊ฒ ํ๊ณ ์ถ์๋ concat๊ณผ merge๋ผ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์ฌ์ฉํ๊ณค ํฉ๋๋ค. ๋ ๊ธฐ๋ฅ..
-
NaverMap SDK - ๊ฒฝ๋ก์ & ํ์ดํLibrary 2021. 8. 13. 09:24
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ NaverMap SDK๋ฅผ ์ด์ฉํด์ ๊ฒฝ๋ก์ ๊ณผ ํ์ดํ๋ฅผ ์ง๋์ ํ์ํ๋๊ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป ์ฌ์ ์ ํด์ผํ ๊ฒ! https://navermaps.github.io/ios-map-sdk/guide-ko/1.html ์๊ธฐ ์ฌ์ดํธ๋ฅผ ์ ์ํด์ ์์ํ๊ธฐ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ผ ํ์๋ฉด๋์! ๊ฐ๋จํ ์์ฝํ๋ฉด 1. ํด๋ผ์ด์ธํธ ID ๋ฐ๊ธ 2. ์์กด์ฑ ์ถ๊ฐ (์ฝ์ฝ์ํ๋ง ๋ฉ๋๋ค!) 3. ํด๋ผ์ด์ธํธ ID ์ง์ 4. API ํธ์ถ 5. ์ง๋ ํ์ - ์ด ์ง๋ ํ์๋ ์์ ๊ณผ์ ๋ค์ ๋ง์ณค๋ค๋ฉด NMFMapView ๋ผ๋ ํด๋์ค๋ฅผ ์ง์ ํ์ฌ ์์ฑ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ฐธ๊ณ ๋ก ๋ณธ ํฌ์คํ ์์๋ ๊ฒฝ๋ก์ ๊ณผ ํ์ดํ์ ๋ํด ๊ธฐ์ฌํ์๊ธฐ์ ์ง๋ ๋ฐ ์ขํ ๊ฐ์ฒด์ ์ต์ , ์นด๋ฉ๋ผ, ๋ง์ปค ๊ธฐํ ์ธํฐํ์ด์ค์ ๋ํ๊ฒ์ ํด๋น ํฌ์ค..
-
RxSwift - CombineLatest & withLatestFromRxSwift 2021. 8. 9. 21:25
์๋ ํ์ธ์ ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ CombineLatest์ withLatestFrom์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐๐ป CombineLatest - ๋๊ฐ์ Observable์ ํด๋นํ๋ ๊ฐ๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์ต์ ์ผ๋ก ์์ ๋ ์ด๋ฒคํธ๋ฅผ ๋ฌถ์ด ์ ๋ฌ ์ฝ๊ฒ ์ฝ๋๋ฅผ ํตํด์ ์ดํดํ์๋ฉด ์๋์ ๊ฐ์ด ์ ์ํด๋ณผ ์ ์๋ค. let owner = Observable.from(["์ฒ ์", "์ํฌ", "์ค์", "์ ์ธ"]) let pet = Observable.from(["cat", "dog", "bird", "pig"]) Observable.combineLatest(owner, pet, resultSelector: { (owner: String, pet: String) return (owner, pet) } ) .subsc..
-
DI & SwinjectiOS 2021. 8. 3. 22:07
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ Swinject์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ง๐ป๐ป Swinject? Swinject๋ ์์กด์ฑ ์ฃผ์ ํ๋ ์์ํฌ์ ๋๋ค. ํ๋ง๋๋ก ์ ์ํ๊ธฐ๊ฐ ์ฐธ ์ด๋ ค์ด๋ฐ ๊ทธ๋ผ ๋จผ์ ์์กด์ฑ ์ฃผ์ ์ด ์ด๋ค๊ฒ์ธ์ง ์์๋ด์ผ๊ฒ ์ฃ ? ์์กด์ฑ ์ฃผ์ ? Dependency Injection์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ๊ฐ์ฒด์งํฅ์ ์ค๊ณํ๊ณ ์ฝ๋ฉํ ๋ ์ค์ํ ๋ถ๋ถ์ ๋๋ค. ๋ณต์กํ ๊ฐ๋ฐ์ ํ๋ฉด ํ ์๋ก ์ฝ๋๊ฐ ์์กด์ฑ์ด ์๊ธธ์๊ฐ ์์ต๋๋ค. ์๋ฅผ๋ค์ด ๊ฐ๋จํ ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค. class Person { var action = Action() func startWalk() { self.action.walk() } } ์ด๋ด๋ startWalk ํจ์ ํธ์ถ์ ํ๊ธฐ ์ํด์๋ Action ํด๋์ค๊ฐ ์ ์๋์ผํฉ๋๋ค. ์ด๋ด๊ฒฝ์ฐ A..
-
์ํ๋ฅผ ์ต์ํํ ์๊ณ ๋ฆฌ์ฆ (2)Algorithm 2021. 8. 1. 10:53
์๋ ๋ฌธ์ ๋ ์ฝ๋๋ฆฌํฐ์์ ์ ๊ณตํ๋ MissingInteger์ ๋ฌธ์ ์ ๋๋ค๐ง๐ป๐ป ๋ฌธ์ ์ ์ This is a demo task. Write a function: public func solution(_ A : inout [Int]) -> Int that, given an array A of N integers, returns the smallest positive integer (greater than 0) that does not occur in A. For example, given A = [1, 3, 6, 4, 1, 2], the function should return 5. Given A = [1, 2, 3], the function should return 4. Given A = [−1, −3]..
-
์ํ๋ฅผ ์ต์ํํ ์๊ณ ๋ฆฌ์ฆAlgorithm 2021. 7. 24. 11:29
์๋ ๋ฌธ์ ๋ ์ฝ๋๋ฆฌํฐ์์ ์ ๊ณตํ๋ MaxCounters์ ๋ฌธ์ ์ ๋๋ค๐ง๐ป๐ป ๋ฌธ์ ์ ์ You are given N counters, initially set to 0, and you have two possible operations on them: increase(X) − counter X is increased by 1, max counter − all counters are set to the maximum value of any counter. A non-empty array A of M integers is given. This array represents consecutive operations: if A[K] = X, such that 1 ≤ X ≤ N, then operation K is..
-
Safe ArraySwift 2021. 7. 24. 09:19
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ข ์ด๋ฒ ํฌ์คํ ์์๋ ๋ฐฐ์ด์ ๋ํด ์์ ํ๊ฒ ์กฐํํ๊ณ ์ธ๋ฑ์ค๋ฅผ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ฐ๋ตํ ์์๋ณด๊ฒ ์ต๋๋ค๐๐ป ๋ฐฐ์ด์ ๋ํด ์์ ํ๊ฒ ์ ๊ทผํ์ง ๋ชปํ ๋ ์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ฐํ์์์ ๋ง์ด ๊ฒช์ด๋ณด์ จ์๊ฒ๋๋ค. fatal error: Array index out of range ๋ฐ๋ก ์ ๊ทผํ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ ๋ฒ์ ๋ฐ, ์ฆ ์๋ค๋ ์๋ฌ ๋ฉ์์ง์ ๋๋ค. if let๋ฑ ์๋์ ๊ฐ์ด ์ต์ ๋๋ฐ์ธ๋ฉ์ ์์ ํ๊ฒ ํด์คฌ๋ค๊ณ ์๊ฐํ๋๋ฐ ์ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ํ๋๊ฑธ๊น์? struct Person { let name = "bob" let age = 10 ... } let onePerson = Person() let twoPerson = Person() let people: [Person] = [onePerson, twoPe..