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

๐Ÿ“Œ Language37

[JS] ๊ตฌ์กฐ๋ถ„ํ•ด(Destructuring) (feat. ์‰ฝ๊ฒŒ ๋ณ€์ˆ˜ ๋งŒ๋“ค๊ธฐ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ JavaScript์—์„œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ถ„ํ•ด์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ๋ฐฐ์—ด ๋ถ„ํ•ดํ•ด์„œ ๋ณ€์ˆ˜ ๋งŒ๋“ค๊ธฐ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด์„œ ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. let arr = ["foma","gran"] let [foma,gran] = arr console.log(foma) //"foma" console.log(gran) //"gran" ๋ฌธ์ž์—ด ๋ถ„ํ•ดํ•ด์„œ ๋ณ€์ˆ˜ ๋งŒ๋“ค๊ธฐ ๋ฌธ์ž์—ด์„ ์›ํ•˜๋Š” ๋‹จ์œ„๋กœ ๋ถ„ํ•ดํ•˜์—ฌ ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. let fomagran = "foma,gran" let [foma,gran] = fomagran.split(',') console.log(foma) //"foma" console.log(gran) //"gra.. 2022. 2. 5.
[JS] iOS ๊ฐœ๋ฐœ์ž๊ฐ€ ์ดํ•ดํ•˜๋Š” JavaScript ๊ธฐ์ดˆ๋ฌธ๋ฒ• (feat. Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์–ผ๋งˆ ์ „์— ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. JavaScript๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋‹ˆ Swift๋ž‘ ๋น„์Šทํ•œ ๊ฒƒ๋„ ์žˆ๊ณ  ์•„๋‹Œ ๋ถ€๋ถ„๋„ ๋งŽ๋”๋ผ๊ตฌ์š”. ๊ทธ๋ž˜์„œ ์›๋ž˜ ์ต์ˆ™ํ–ˆ๋˜ Swift๋ฅผ ๊ธฐ์ค€์œผ๋กœ JavaScript์™€ ๋‹ค๋ฅธ ์ ์— ๋Œ€ํ•ด์„œ๋งŒ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜ Swift์—์„  ์ƒ์ˆ˜๋ฅผ let,๋ณ€์ˆ˜๋ฅผ var๋กœ ์“ด๋‹ค. let name = "Fomagran" //์ƒ์ˆ˜ var name = "Fomagran" //๋ณ€์ˆ˜ JavaScript๋Š” ์ƒ์ˆ˜๋ฅผ const,๋ณ€์ˆ˜๋ฅผ let์ด๋ผ๊ณ  ์“ด๋‹ค. ์ด๋ฏธ ์ƒ์ˆ˜ let์— ์ต์ˆ™ํ•ด ์žˆ๋Š” ์ƒํƒœ๋ผ์„œ.. ์‹ค์ˆ˜๋ฅผ ๋งŽ์ด ํ•  ๊ฒƒ ๊ฐ™๋‹ค. const name = "Fomagran" //์ƒ์ˆ˜ let name = "Fomagran" //๋ณ€์ˆ˜ ์ถœ.. 2022. 2. 5.
[Swift] Subscript๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ•ด์‰ฌ ํ…Œ์ด๋ธ”(๋”•์…”๋„ˆ๋ฆฌ)์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ์ค‘์— a["A"] ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ฐ’์„ ์ง€์ •ํ•˜๊ณ  ๊ฐ’์„ ๊บผ๋‚ด์˜ค๋Š”์ง€ ์ฐพ์•„๋ณด๋˜ ์ค‘์— subscript๋ฅผ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ธ€์„ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Subscript Swift ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค! ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด ๊ทธ๋ฆฌ๊ณ  ์—ด๊ฑฐํ˜•์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ •์˜ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ž€ ์ฝœ๋ ‰์…˜, ๋ฆฌ์ŠคํŠธ, ์‹œํ€€์Šค ๋“ฑ ์ง‘ํ•ฉ์˜ ํŠน์ • ๋ฉค๋ฒ„ ์—˜๋ฆฌ๋จผํŠธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•์ž…๋‹ˆ๋‹ค. ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ถ”๊ฐ€์ ์ธ ๋ฉ”์†Œ๋“œ ์—†์ด ํŠน์ • ๊ฐ’์„ ํ• ๋‹น(assign)ํ•˜๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ฌ ์ˆ˜(retrieve) ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด, ๋ฐฐ์—ด(Array) ์ธ์Šคํ„ด์Šค์˜ ํŠน์ • ์—˜๋ฆฌ๋จผํŠธ๋Š” someArray[index] ๋ฌธ๋ฒ•.. 2021. 11. 16.
[Dart] Mixin์ด๋ž€? (feat. ์—ฌ๋Ÿฌ ํด๋ž˜์Šค ์ƒ์†๋ฐ›๊ธฐ) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! Dart์— ๋Œ€ํ•œ ์ฒซ ๊ธ€์„ ์“ฐ๊ฒŒ ๋๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ Dart์—์„œ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค์˜ ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” Mixin์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Mixin์ด๋ž€? ๊ณต์‹ ๋ฌธ์„œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์™€์žˆ์Šต๋‹ˆ๋‹ค. "Mixin์€ ์—ฌ๋Ÿฌ ํด๋ž˜์Šค ๊ณ„์ธต์—์„œ ํด๋ž˜์Šค ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค." ๋ง๋ถ™์—ฌ Mixin์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„  with ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฆ„์„ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค๊ณ  ๋‚˜์™€์žˆ์Šต๋‹ˆ๋‹ค. Example ์•„๋ž˜์™€ ๊ฐ™์ด ํด๋ž˜์Šค๋“ค์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ• ๊ฒŒ์š”. ๋ณดํ†ต ์•„๋ž˜์™€ ๊ฐ™์ด Player ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์•„๋ž˜ ํ•˜์œ„ ํด๋ž˜์Šค๋Š” ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„์„œ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. class Player { void play() { print("๊ฒฝ๊ธฐํ•˜๋Š” ์ค‘..."); } } class BasketBallPl.. 2021. 8. 21.
[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.
728x90
๋ฐ˜์‘ํ˜•