๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ Language/Swift22

[Swift] Subscript๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ•ด์‰ฌ ํ…Œ์ด๋ธ”(๋”•์…”๋„ˆ๋ฆฌ)์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ์ค‘์— a["A"] ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ’์„ ์ง€์ •ํ•˜๊ณ  ๊ฐ’์„ ๊บผ๋‚ด์˜ค๋Š”์ง€ ์ฐพ์•„๋ณด๋˜ ์ค‘์— subscript๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ธ€์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Subscript Swift ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค! ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด ๊ทธ๋ฆฌ๊ณ  ์—ด๊ฑฐํ˜•์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ž€ ์ฝœ๋ ‰์…˜, ๋ฆฌ์ŠคํŠธ, ์‹œํ€€์Šค ๋“ฑ ์ง‘ํ•ฉ์˜ ํŠน์ • ๋ฉค๋ฒ„ ์—˜๋ฆฌ๋จผํŠธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค. ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ถ”๊ฐ€์ ์ธ ๋ฉ”์†Œ๋“œ ์—†์ด ํŠน์ • ๊ฐ’์„ ํ• ๋‹น(assign)ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ์ˆ˜(retrieve) ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด, ๋ฐฐ์—ด(Array) ์ธ์Šคํ„ด์Šค์˜ ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ๋Š” someArray[index] ๋ฌธ๋ฒ•.. 2021. 11. 16.
[RxCocoa] bind๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋žœ๋งŒ์— Rx๊ด€๋ จ ํฌ์ŠคํŒ…์„ ํ•˜๋„ค์š”. ์˜ค๋Š˜์€ UI ํŠนํ™”๋œ Operator ์ค‘ bind์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Binder ๋จผ์ € bind๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  Binder๋ฅผ ์•Œ์•„์•ผ ํ•˜๋Š”๋ฐ์š”. Binder๋Š” ์˜ต์ €๋ฒ„ ํƒ€์ž…์œผ๋กœ 3๊ฐ€์ง€ ํŠน์ง•์ด ์žˆ๋Š”๋ฐ์š”. ์ฒซ ๋ฒˆ์งธ๋กœ๋Š” ๋ฐ˜๋“œ์‹œ ๋ฉ”์ธ์Šค์ผ€์ฅด๋Ÿฌ์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋กœ๋Š” ์—๋Ÿฌ ์ด๋ฒคํŠธ๋ฅผ ๋”ฐ๋กœ ๋ฐฉ์ถœํ•˜์ง€ ์•Š๊ณ  ๋กœ๊ทธ๋กœ๋งŒ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ๋กœ๋Š” ์˜ต์ €๋ฒ„ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ตฌ๋…์ž๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. public struct Binder: ObserverType { public typealias Element = Value private let binding: (Event) -> Void //.. 2021. 7. 5.
[Swift] defer๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด defer๋ฌธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ defer๋ž€? ์ฝ”๋“œ ๋ธ”๋ก์ด ๋๋‚˜๊ธฐ ์ „์— ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. iOS๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์ฝ”๋”ฉ์ด ๋๋‚œ ํ›„์— ๋ฐ˜๋“œ์‹œ ์ปค๋ฐ‹์„ ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด defer๋ฌธ์„ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰ํ–ˆ์Œ์—๋„ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— "์ปค๋ฐ‹ํ•˜๊ธฐ"๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. func ์ฝ”๋”ฉํ•˜๊ธฐ() { defer { print("์ปค๋ฐ‹ํ•˜๊ธฐ") } print("์ปดํ„ฐ์ผœ๊ธฐ") print("Xcode ์ผœ๊ธฐ") print("์ฝ”๋“œ ์ž‘์„ฑ") print("์ฝ”๋”ฉ ๋") } ์ฝ”๋”ฉํ•˜๊ธฐ() //์ปดํ„ฐ์ผœ๊ธฐ //Xcode ์ผœ๊ธฐ //์ฝ”๋“œ ์ž‘์„ฑ //์ฝ”๋”ฉ ๋ //์ปค๋ฐ‹ํ•˜๊ธฐ ๋งŒ์•ฝ defer๋ฌธ์ด ํ•œ ๋ธ”๋ก์— ์—ฌ๋Ÿฌ๊ฐœ.. 2021. 5. 27.
[Swift] ํด๋กœ์ ธ๋Š” ์™œ ์ฐธ์กฐํƒ€์ž…์ผ๊นŒ?(Why closure is reference type?) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํด๋กœ์ ธ๊ฐ€ ์™œ ์ฐธ์กฐํƒ€์ž…์ธ์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ํด๋กœ์ ธ๋ž€? ํด๋กœ์ ธ๋Š” ์ด๋ฆ„์ด ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š์€ ํ•จ์ˆ˜ ์ฆ‰, ์ต๋ช…ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค! (์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ๋œปํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.) ์ผ๊ธ‰ ๊ฐ์ฒด๋กœ์จ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ์ธ์ž๋กœ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฐ˜ํ™˜๊ฐ’์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ๋˜์–ด ์žˆ์ฃ ? func hello() -> String { return "hello" } ํด๋กœ์ ธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ํ•จ์ˆ˜๋ช…์ด ์—†์ด ํ•จ์ˆ˜์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. let hello:(()->String) = { return "hello"} ํด๋กœ์ ธ์— ๋Œ€ํ•œ ๊ธ€์ด ์•„๋‹ˆ๋ฏ€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ๋งŒ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐˆ๊ฒŒ์š”~ ์ฐธ์กฐ ํƒ€์ž…์ด๋ž€? ์ฐธ์กฐ ํƒ€์ž…์€ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด์„œ ์‚ฌ.. 2021. 5. 27.
[Swift] Enum์ด๋ž€?(feat. ์จ์•ผํ•˜๋Š” ์ด์œ ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์š”์ฆ˜ ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•œ ๊ณ ๋ฏผ์„ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์–ด๋–ค ๊ธ€์—์„œ ์ข‹์€ ์ฝ”๋“œ์˜ ๊ธฐ์ค€์ด 1. ๋ณด๊ธฐ ์‰ฌ์šด ๊น”๋”ํ•œ ์ฝ”๋“œ 2. ํšจ์œจ์ ์ธ ์ฝ”๋“œ ๋ผ๊ณ  ํ•˜๋”๋ผ๊ตฌ์š”. ์—ด๊ฑฐํ˜•์€ ๋ฏธ๋ฆฌ ์ž์ฃผ ์“ฐ์ผ ํ‚ค์›Œ๋“œ๋ฅผ ์—ด๊ฑฐํ•ด๋†“๋Š” ๊ฒƒ์ธ๋ฐ ์ด๊ฒƒ์€ ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ํฐ ๋„์›€์„ ์ฃผ๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ Enum์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋Š”์ง€ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Enum์ด๋ž€? "์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์—ด๊ฑฐํ˜•์€ ์š”์†Œ, ๋ฉค๋ฒ„๋ผ ๋ถˆ๋ฆฌ๋Š” ๋ช…๋ช…๋œ ๊ฐ’์˜ ์ง‘ํ•ฉ์„ ์ด๋ฃจ๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค. ์—ด๊ฑฐ์ž ์ด๋ฆ„๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด๋‹น ์–ธ์–ด์˜ ์ƒ์ˆ˜ ์—ญํ• ์„ ํ•˜๋Š” ์‹๋ณ„์ž์ด๋‹ค." - ์œ„ํ‚ค ๋ฐฑ๊ณผ - ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ์ƒ์ˆ˜ ์—ญํ• ์„ ๊ฐ’๋“ค์„ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ๋‚˜์—ดํ•ด๋†“๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Enum์„ ์“ฐ๋ฉด ๋ญ๊ฐ€ ์ข‹์€๋ฐ?๐Ÿคจ 1. ์ฝ”๋“œ๊ฐ€ ๋ณด๊ธฐ ์‰ฝ.. 2021. 4. 28.
[RxSwift] Combining Observables ์•Œ์•„๋ณด๊ธฐ (Combine Latest,Zip, Merge,Concat,withLatestFrom) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋žœ๋งŒ์— RxSwift ๊ธ€์„ ํฌ์ŠคํŒ…์„ ํ•˜๋Š”๋ฐ.. ์จ์•ผ์ง€ ์จ์•ผ์ง€ ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค... ์˜ค๋Š˜์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ด๋ฒคํŠธ๋“ค์„ ํ•ฉ์ณ์ฃผ๋Š” ์—ฐ์‚ฐ์ž๋“ค์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ 1.CombineLatest ์—ฌ๋Ÿฌ๊ฐœ์˜ ์˜ต์ €๋ฒ„๋ธ”์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์˜ ๊ฐ’์„ ํ•ฉ์ณ์„œ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ๊ฐ ์ƒ‰๊น”,๋ชจ์–‘,์ˆซ์ž๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ์„œ๋ธŒ์ ํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. let ์ƒ‰๊น” = PublishSubject() let ๋ชจ์–‘ = PublishSubject() let ์ˆซ์ž = PublishSubject() ์ปด๋ฐ”์ธ๋ ˆ์ดํ‹ฐ์ŠคํŠธ๋กœ ๊ฐ ์˜ต์ €๋ฒ„๋ธ”์„ ๋ฌถ์€ ๋’ค ๊ตฌ๋…์„ ํ•˜์—ฌ ๋ฐฉ์ถœํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•ด๋ด…๋‹ˆ๋‹ค. let combineLatest = Observable.combineLatest(์ƒ‰๊น”,๋ชจ์–‘,์ˆซ์ž) {์ƒ‰๊น”,๋ชจ์–‘,์ˆซ์ž .. 2021. 4. 7.
[Swift] ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ๊ฐ์ฒด๋กœ , ๊ฐ์ฒด๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฐ”๊พธ๋Š” ๋ฒ• (Dictionary to object , Object to dictionary) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์š”์ฆ˜ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋Š” Restful API ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ํ•˜๋Š”๋ฐ์š”. ์ด ๋•Œ json ํ˜•์‹์œผ๋กœ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ (get) ๋ฅผ Alamofire์™€ SwiftyJSON ์ด๋ผ๋Š” ์ข‹์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์‰ฝ๊ฒŒ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ๋ฐ›๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์›ํ•˜๋Š” Object ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์„œ ์ €์žฅํ•˜๋ฉด ๋” ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•  ๋•Œ (post,put ๋“ฑ) ๋Š” ์ด๋ ‡๊ฒŒ ๊ฐ์ฒด๋กœ ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ”์„œ ์ „๋‹ฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. Object๋ฅผ Dictionary๋กœ ๋ฐ”๊พธ๊ธฐ ๋จผ์ € ์ด๋ฆ„๊ณผ ๋‚˜์ด์™€ ์„ฑ๋ณ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” User๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”. (์›.. 2021. 3. 9.
[Swift] ๋ฐฐ์—ด์—์„œ ํŠน์ •๊ฐ’์„ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ(Change Specific Values to Something in Array ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด ๋ฐฐ์—ด์—์„œ ํŠน์ •๊ฐ’์„ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ธฐ์ธ๋ฐ์š”. ์ œ๋ชฉ์—์„œ ํ•œ์ค„๋กœ ํ‘œํ˜„ํ•˜๊ธฐ๊ฐ€ ํž˜๋“œ๋„ค์š”... Preview Example ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด ๊ณผ์ผ์ด ๋‹ด๊ฒจ์žˆ๋Š” ๋ฐฐ์—ด์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ• ๊ฒŒ์š” [๋ฐ”๋‚˜๋‚˜,์‚ฌ๊ณผ,์ˆ˜๋ฐ•,ํฌ๋„,๋ฐ”๋‚˜๋‚˜,๋ฐ”๋‚˜๋‚˜] 2021. 2. 22.
[RxCocoa] Relay๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜ ์•Œ์•„๋ณผ๊ฑด RxCocoa์—์„œ ์ œ๊ณตํ•˜๋Š” Relay๋ผ๋Š” ๋…€์„์ž…๋‹ˆ๋‹ค. ์šฐ์„  Relay๋ฅผ ์‚ฌ์ „์— ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์‹คํ—˜์šฉ ์ค‘๊ณ ๋„ ํ†ต์‹  ์œ„์„ฑ? ์ด๋ผ๊ณ  ๋– ์„œ ๋‹นํ™ฉํ–ˆ๋Š”๋ฐ... ๋‹ค๋ฅธ ๋œป์„ ๋ณด๋‹ˆ ์ „๋‹ฌํ•˜๋‹ค,์ค‘๊ณ„ํ•˜๋‹ค๋ผ๋Š” ๋œป์ด ์žˆ๋”๋ผ๊ตฌ์š”! ๊ทธ๋ž˜์„œ ์•„ ๋ฌด์—‡์ธ๊ฐ€ ์ „๋‹ฌํ•˜๋Š” ๋…€์„์ธ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ์—ˆ์–ด์š”! ๊ทธ๋Ÿผ ๋ณธ๊ฒฉ์ ์œผ๋กœ Relay ๊ฐ€ ์–ด๋–ค ๋…€์„์ธ์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค~ Relay ์šฐ์„  ์ œ์ผ ๋จผ์ € Relay๋Š” RxSwift์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ RxCocoa์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์™œ RxCocoa์—์„œ ์ œ๊ณต๋ ๊นŒ์š”? ๋ฐ”๋กœ Relay๋ฅผ ์ด์šฉํ•˜๋ฉด UI ์ด๋ฒคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค! ์šฐ์„  ๊ฐ„๋‹จํ•˜๊ฒŒ ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž๋ฉด ๋งŒ์•ฝ์— ํ…์ŠคํŠธํ•„๋“œ์—์„œ ์“ด ๊ธ€์„ ๋ฐฉ์ถœํ•˜๊ณ  ๊ทธ ์ •๋ณด๋ฅผ ๊ตฌ๋…ํ•˜๋Š” ์„œ๋ธŒ์ ํŠธ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ• ๊ฒŒ์š” .. 2021. 2. 3.
[RxSwift] Subject๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ RxSwift ์—์„œ ์•„์ฃผ ํฐ ๋น„์ค‘์„ ์ฐจ์ง€ํ•˜๋Š” Subject์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Subject๋ž€? ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์— ๋‚˜์™€์žˆ๋Š” ๋‚ด์šฉ์„ ํ•ด์„ํ•˜๋ฉด "Subject๋Š” Observable๊ณผ Observable ์—ญํ• ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Observer์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜ ์ด์ƒ์˜ Observable์„ ๊ตฌ๋… ํ•  ์ˆ˜ ์žˆ๊ณ , Observable์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ด€์ฐฐํ•œ ํ•ญ๋ชฉ์„ ์žฌ๋ฐœ์†กํ•˜์—ฌ ํ†ต๊ณผ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒˆ ํ•ญ๋ชฉ์„ ๋‚ด๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค." ๋ผ๊ณ  ๋˜์–ด์žˆ๋Š”๋ฐ์š”. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์˜ต์ €๋ฒ„๋ธ”๊ณผ ์˜ต์ €๋ฒ„์˜ ์—ญํ•  ๋‘˜ ๋‹ค ํ•œ๋‹ค ๋ผ๊ณ  ์ดํ•ดํ•˜์‹œ๋ฉด ๋  ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค! ๋จผ์ € ์˜ต์ €๋ฒ„๋ธ”์€ ๋ญ˜๊นŒ์š”? ์ง€๋‚œ ์‹œ๊ฐ„์— "์˜ต์ €๋ฒ„๋ธ”์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ํ๋ฆ„์ด๋‹ค."๋ผ๊ณ  ์„ค๋ช…๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์˜ต์ €๋ฒ„๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ๋‹น์—ฐ.. 2021. 1. 28.
[RxSwift] Operator๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! RxSwift ๋Š” ์‰ฝ๊ฒŒ Observable์„ ์ƒ์„ฑํ•˜๊ณ  ๋ณ€ํ˜•ํ•˜๊ณ  ํ•ฉ์น˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” Operator๋ผ๋Š” ๊ฒƒ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋‹ค์–‘ํ•œ Operator๋ฅผ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! Create ๊ฐ€์žฅ ๋จผ์ € ์•Œ์•„๋ณผ๊ฑด Observable์„ ์ƒ์„ฑํ•˜๋Š” Operator ์ž…๋‹ˆ๋‹ค. 1. create ๊ฐ€์žฅ ๊ธฐ๋ณธ์œผ๋กœ ์˜ต์ €๋ฒ„๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 2. just just๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ •ํ•ญ๋ชฉ์„ ํ•˜๋‚˜๋งŒ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3. from From์€ just์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ just๋Š” ํ•œ๋ฒˆ์— ๋ชจ๋“  ๊ฒฐ๊ณผ๋ฅผ ๋ฐฉ์ถœํ•˜๋Š” ๋ฐ˜๋ฉด from์€ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฐฉ์ถœํ•ฉ๋‹ˆ๋‹ค. 4.of of๋Š” just์ฒ˜๋Ÿผ [1,2,3] ๋ฐฐ์—ด์„ ํ•œ๋ฒˆ์— ๋ฐฉ์ถœํ•  ์ˆ˜๋„ ์žˆ๊ณ .. 2021. 1. 19.
[RxSwift] Observable ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— Reactive X๋Š” "์˜ต์ €๋ฒ„๋ธ” ํ๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ API" ๋ผ๊ณ  ์†Œ๊ฐœ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค. ์†Œ๊ฐœ์— ๋‚˜์™€ ์žˆ๋‹ค์‹œํ”ผ Observable ์ด๋ผ๋Š” ๊ฐœ๋…์€ ๊ฐ€์žฅ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ฒƒ์ธ๋ฐ์š”. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ Observable์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Observer Pattern ๋จผ์ € Reactive X๋Š” ์˜ต์ €๋ฒ„ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ต์ €๋ฒ„ ํŒจํ„ด์ด๋ž€ Observable์„ Observer๊ฐ€ ๊ตฌ๋…ํ•˜๊ณ  Observable์ด ์–ด๋–ค ์ƒํƒœ๋ฅผ ๋ฐฉ์ถœํ•˜์˜€์„ ๋•Œ Observer์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด์ฃ . ์ด๊ฒƒ์€ ์œ ํŠœ๋ฒ„๊ฐ€ ๊ตฌ๋…์ž์—๊ฒŒ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ์ดํ•ดํ•˜์‹œ๋ฉด ํŽธํ• ๊ฑฐ๊ฐ™์•„์š”. Observable์ด ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์€ 3๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. OnNext -> ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ OnEr.. 2020. 12. 29.
728x90
๋ฐ˜์‘ํ˜•