๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•
[iOS] Notification์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณด๋‚ด๊ธฐ(Pass data using Notification) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค!! ์˜ค๋Š˜์€ Notification์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ณด๋‚ด๊ธฐ๋ฅผ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ‰์†Œ์— ๋‹ค๋ฅธ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์„ธ๊ทธ๋ฅผ ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๋ฐ˜๋“œ์‹œ ๊ทธ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด์•ผ๋˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์—ˆ๋Š”๋ฐ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์•„๋ฌด๋Ÿฐ ์ด๋™์—†์ด ๋ฐ์ดํ„ฐ๋งŒ ๋ณด๋‚ผ ์ˆœ ์—†์„๊นŒ?๋ฅผ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ตฌ๊ธ€๋งํ•œ ๊ฒฐ๊ณผ NotificationCenter๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค! ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ 1๊ฐœ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ 1๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ์ €๋Š” ViewController์™€ TabbarViewController1์„ ๋งŒ๋“ค์–ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. ViewController์—” item๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก์ด๋˜๊ณ  TabbarViewController1์— ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•  Label์„ ๊ฐ๊ฐ .. 2020. 9. 14.
[iOS/UI] ํ…Œ์ด๋ธ”๋ทฐ ํŠน์ • ์ธ๋ฑ์Šค๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๊ธฐ(UITableView scrollToRow) ์•ˆ๋…•ํ•˜์„ธ์š” Foma์ž…๋‹ˆ๋‹ค !! ์˜ค๋Š˜์€ ํ…Œ์ด๋ธ”๋ทฐ์—์„œ ํŠน์ • ์ธ๋ฑ์Šค ์œ„์น˜๋กœ ๋ฐ”๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋” ํ…Œ์ด๋ธ”๋ทฐ์— ์ด๋™ํ• ๋•Œ ๋ฐ”๋กœ ๋ช‡๋ฒˆ์งธ section ๋˜๋Š” row์ธ ์…€์ด ๋–ด์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋งํ•œ ๊ฒฐ๊ณผ UITableView์— scrollToRow ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ”๋กœ ์Šคํฌ๋กค๋ง์ด ๋˜๋ฉด์„œ ์ด๋™ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ž ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ! ๋จผ์ € ํ…Œ์ด๋ธ”๋ทฐ์™€ ํ…Œ์ด๋ธ”๋ทฐ์…€๊ณผ ๊ทธ ์•ˆ์— ์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ผ ๋ ˆ์ด๋ธ” ์›ํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ ์ด๋™ํ•  ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•ด ํ…Œ์ด๋ธ”๋ทฐ์˜ row ๊ฐฏ์ˆ˜์™€ row์˜ ์…€์„ ์ •ํ•ด์ค๋‹ˆ๋‹ค. ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์›ํ•˜๋Š” ์ธ๋ฑ์Šค๋กœ ์ด๋™ํ•˜๋„๋ก ์„ค์ •ํ•ด์ค๋‹ˆ๋‹ค. ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด indexPath ์ƒ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์–ด ์›ํ•˜๋Š” row๋ฅผ ์ ์–ด์ฃผ๊ณ  ์•„๋ž˜ ํ˜„์žฌ ํ…Œ์ด๋ธ”๋ทฐ์— scrollT.. 2020. 9. 14.
Cloud Firestore ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ (addSnapshotListener) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํŒŒ์ด์–ด์Šคํ† ์–ด์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ”๋€ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. addSnapshotListener๋ฅผ ๋‹ฌ์•„์ฃผ๋ฉด ๋˜๋Š”๋ฐ์š”. ์ด ๊ธฐ๋Šฅ์€ ์—ฐ๊ฒฐ๋œ ์ฃผ์†Œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์ฃผ๋Š”๋ฐ์š”. ์ด๊ฒƒ์€ ์•„์ฃผ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์œ ์šฉํ•œ ๊ฒƒ์ด๋ผ์„œ ์ด๊ณณ์— ์ ์–ด๋†“๊ฒ ์Šต๋‹ˆ๋‹ค!! ์ž ๊ทธ๋Ÿผ ์˜ˆ์‹œ๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € users๋ผ๋Š” ์ฝœ๋ ‰์…˜์— document๋กœ user1์„ ๋งŒ๋“ค์–ด์ฃผ๊ณ  nameํ•„๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์›ํ•˜๋Š” ์ด๋ฆ„์„ ์จ์ค๋‹ˆ๋‹ค. xcode๋กœ ๋Œ์•„๊ฐ€์„œ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์ด๋™ํ•ด ๋ทฐ์ฝ˜ํŠธ๋กค๋Ÿฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ด๋ฆ„์„ ๋‚˜ํƒ€๋‚ผ Label ํ•˜๋‚˜ ๋ฐ”๊ฟ”์ค„ ์ด๋ฆ„์„ ์ ์„ TextField ๊ทธ๋ฆฌ๊ณ  ์ด๋ฆ„์„ ๋ฐ”๊ฟ”์ค„ Button์„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. ๋ทฐ์ฝ˜ํŠธ๋กค๋Ÿฌ๋กœ ์ด๋™ํ•˜์—ฌ Label,Button,TexField.. 2020. 9. 12.
2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‰ฝ ํŠœํ”Œ Swift ๋ฌธ์ œ ์ฐธ๊ณ  ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํŠœํ”Œ "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr Foma์˜ ํ’€์ด ์ฃผ์–ด์ง„ s๋Š” {{}} let count = s.filter{$0 == "{"}.count {...}๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ”๊พธ์–ด ๋‹ด์•„์ค„ ๋ณ€์ˆ˜๋„ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.(count-1๋งŒํผ ํฌ๊ธฐ๋ฅผ ์ •ํ•ด์ค๋‹ˆ๋‹ค.) => var numbersArray = Array(repeating: [Int](), count: count-1) ๋ฐฉ๋ฒ•์€ ๋จผ์ € s์—์„œ "{"๋ฅผ ์ œ๊ฑฐํ•ด์ค๋‹ˆ๋‹ค. ex) "{{2},{2,1},{2,1,3},{.. 2020. 9. 7.
2020 ์นด์นด์˜ค ์ธํ„ด์‰ฝ ์ˆ˜์‹ ์ตœ๋Œ€ํ™” Swift ๋ฌธ์ œ ์„ค๋ช… IT ๋ฒค์ฒ˜ ํšŒ์‚ฌ๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ๋Š” ๋ผ์ด์–ธ์€ ๋งค๋…„ ์‚ฌ๋‚ด ํ•ด์ปคํ†ค ๋Œ€ํšŒ๋ฅผ ๊ฐœ์ตœํ•˜์—ฌ ์šฐ์Šน์ž์—๊ฒŒ ์ƒ๊ธˆ์„ ์ง€๊ธ‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋Œ€ํšŒ์—์„œ๋Š” ์šฐ์Šน์ž์—๊ฒŒ ์ง€๊ธ‰๋˜๋Š” ์ƒ๊ธˆ์„ ์ด์ „ ๋Œ€ํšŒ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ฒฐ์ •ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ•ด์ปคํ†ค ๋Œ€ํšŒ์— ์ฐธ๊ฐ€ํ•˜๋Š” ๋ชจ๋“  ์ฐธ๊ฐ€์ž๋“ค์—๊ฒŒ๋Š” ์ˆซ์ž๋“ค๊ณผ 3๊ฐ€์ง€์˜ ์—ฐ์‚ฐ๋ฌธ์ž(+, -, *) ๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์—ฐ์‚ฐ ์ˆ˜์‹์ด ์ „๋‹ฌ๋˜๋ฉฐ, ์ฐธ๊ฐ€์ž์˜ ๋ฏธ์…˜์€ ์ „๋‹ฌ๋ฐ›์€ ์ˆ˜์‹์— ํฌํ•จ๋œ ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์žฌ์ •์˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ์ œ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹จ, ์—ฐ์‚ฐ์ž์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ƒˆ๋กœ ์ •์˜ํ•  ๋•Œ, ๊ฐ™์€ ์ˆœ์œ„์˜ ์—ฐ์‚ฐ์ž๋Š” ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, + > - > * ๋˜๋Š” - > * > + ๋“ฑ๊ณผ ๊ฐ™์ด ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ +,* > - ๋˜๋Š” * > +,-์ฒ˜๋Ÿผ 2๊ฐœ ์ด์ƒ์˜ ์—ฐ์‚ฐ์ž.. 2020. 9. 3.
[RxSwift] RxSwift๋ฅผ ํ•ด์•ผํ•˜๋Š” ์ด์œ  ํ‰์†Œ์— MVVMํŒจํ„ด์ด๋‚˜ Rx์™€ ๊ด€๋ จ๋œ ๊ฒƒ๋“ค์ด ๋งŽ์ด ๋ณด์˜€๊ณ  ๊ผญ ๋ฐฐ์›Œ์•ผํ•œ๋‹ค๋Š” ๋ง๋“ค์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™œ ๋ฐฐ์›Œ์•ผํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„  ์•Œ์ง€ ๋ชปํ–ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธฐํšŒ์— ์™œ ํ•ด์•ผํ•˜๋Š”๊ฐ€ Rx๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€์— ๋Œ€ํ•ด์„œ ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๋จผ์ € ํ•ด์•ผํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ๊ธฐ์ „์— RxSwift๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ฐพ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. RxSwift๋ž€ Reactive eXtensions + Swift์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Rx๋Š” ๋ฌด์—‡์ธ๊ฐ€? Rx๋Š” Reactive Programming ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๋˜์–ด์žˆ๋Š” API์ž…๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ณ€ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์— ์‰ฝ๊ฒŒ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด๋ฒคํŠธ๋“ค์˜ ์ˆœ์„œ,์žฌ์‚ฌ์šฉ์„ฑ์„ ํ–ฅ์ƒ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋น„๋™๊ธฐ์‹(์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ง„ํ–‰) ํ™œ๋™์„ ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ Functional Pro.. 2020. 9. 3.
[iOS/UI] ์„œ์น˜๋ฐ” ์ปค์Šคํ…€ํ•˜๊ธฐ (Custom UISearchBar) ์•ˆ๋…•ํ•˜์„ธ์š”! Foma์ž…๋‹ˆ๋‹ค! ์ด๋ฒˆ์—๋Š” ์„œ์น˜๋ฐ”์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณผ๊ฑด๋ฐ์š”. ๊ฐ€๋” ์„œ์น˜๋ฐ”์˜ ๋ฐฐ๊ฒฝ์ƒ‰์ด๋‚˜ ๋‹๋ณด๊ธฐ์ด๋ฏธ์ง€ ๋“ฑ์„ ๋ฐ”๊พธ๊ณ ์‹ถ์„ ๋•Œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์—ด์‹ฌํžˆ ๊ตฌ๊ธ€๋งํ•ด๋ณธ ๊ฒฐ๊ณผ 1.์„œ์น˜๋ฐ”์˜ ํ”Œ๋ ˆ์ด์Šคํ™€๋”(๊ฒ€์ƒ‰ํ•˜๊ธฐ ์ „์— ํšŒ์ƒ‰๊ธ€์”จ๋กœ ๋– ์žˆ๋Š”๊ฒƒ) ์„ธํŒ… 2.์„œ์น˜๋ฐ”์˜ ์™ผ์ชฝ ๋‹๋ณด๊ธฐ ์•„์ด์ฝ˜ ์ด๋ฏธ์ง€ ์„ธํŒ… 3.์„œ์น˜๋ฐ”์˜ ์˜ค๋ฅธ์ชฝ ์—‘์Šค๋ฒ„ํŠผ ์ด๋ฏธ์ง€ ์„ธํŒ…(๊ฒ€์ƒ‰ํ–ˆ์„ ๋•Œ) 4.์„œ์น˜๋ฐ”๋ฅผ ๋„ค๋น„๊ฒŒ์ด์…˜๋ฐ”์— ๋„ฃ๋Š”๋ฒ• 5.์„œ์น˜๋ฐ”์˜ ๋ฐฐ๊ฒฝํ™”๋ฉด,๊ธ€์”จ์ƒ‰,ํ”Œ๋ ˆ์ด์Šคํ™€๋”์ƒ‰ ์„ธํŒ… 6.์„œ์น˜๋ฐ” ์™ผ์ชฝ,์˜ค๋ฅธ์ชฝ ์ด๋ฏธ์ง€ ๋„ฃ๊ธฐ ํ‹ดํŠธ์ƒ‰ ์„ธํŒ… ์ด๋ ‡๊ฒŒ ์ปค์Šคํ…€ํ•˜๋Š” ๋ฒ•์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๊ฐ€์žฅ ๋จผ์ € ํ•ด์ฃผ์–ด์•ผํ•  ๊ฒƒ์€ searchbar๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. = > let searchBar = UISearchBar() 1.ํ”Œ๋ ˆ์ด์Šคํ™€๋” ์„ค์ •๋ฒ•์€ searchBar์— .placeholder๋ฅผ.. 2020. 9. 2.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํƒ€๊ฒŸ ๋„˜๋ฒ„ Swift ํ’€์ด numbers์˜ ๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. -> var numbersCopy = [Int]() target ๊ฐ’์„ ์ €์žฅํ•  ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. -> var targetCopy = 0 ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. -> var count = 0 numbers์˜ ์ˆซ์ž๋“ค์„ ์ฐจ๋ก€๋กœ ๋”ํ•˜๊ฑฐ๋‚˜ ๋บ์„ ๋•Œ ๋‘๊ฐ€์ง€ ๋ชจ๋‘๋ฅผ ์‹คํ–‰์‹œํ‚ค๋„๋ก ํ•˜์—ฌ ๊นŠ์ด๊ฐ€(depth) numbers์˜ ๊ฐฏ์ˆ˜์— ๋„๋‹ฌํ•˜๋ฉด ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•˜๋Š” ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.(dfs) func dfs(_ depth: Int, _ sum: Int) { if depth == numbersCopy.count { ... } return } numbers์˜ ๊ฐฏ์ˆ˜์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ ํ•ฉ์ด target์˜ ๊ฐ’๊ณผ ๊ฐ™๋‹ค๋ฉด ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๋„๋กํ•ด์ค๋‹ˆ๋‹ค. => if.. 2020. 8. 31.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ตœ์†Ÿ๊ฐ’ ๋งŒ๋“ค๊ธฐ Swift ํ’€์ด: ํ•ต์‹ฌ์€ ๊ฐ€์žฅ ํฐ ์ˆ˜์™€ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ๊ณฑํ•  ๋•Œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ ๋กœ A๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์‹œ์ผœ์ฃผ๊ณ  B๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์‹œ์ผœ์ค๋‹ˆ๋‹ค. (A๋ž‘ B๋ฅผ ๋ฐ˜๋Œ€๋กœ ํ•ด๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.) ๊ทธ๋‹ค์Œ ์ฐจ๋ก€๋กœ A์˜ ๊ฐ’๊ณผ B์˜ ๊ฐ’์„ ๊ณฑํ•ด์ฃผ๊ณ  ๊ทธ ๊ฐ’์„ ๋”ํ•ด์ค๋‹ˆ๋‹ค. A๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์‹œ์ผœ์ค๋‹ˆ๋‹ค. => A.sorted(by: B.sorted(by:>) zip์„ ์ด์šฉํ•˜์—ฌ ๋‘ ๊ฐ’์„ ๋ฌถ์–ด์ค๋‹ˆ๋‹ค. => zip(A.sorted(by:)) (์—ฌ๊ธฐ์„œ zip์€ ์Œ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค.) reduce๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฐจ๋ก€๋กœ A์™€ B๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ๋”ํ•ด์ค๋‹ˆ๋‹ค. => a.reduce(0) {$0 + (Int($1.0)*Int($1.1))} ( ์—ฌ๊ธฐ์„œ reduce๋Š” ์ฐจ๋ก€๋กœ ๊ฐ’์„ ๋” ํ•ด์ฃผ๋Š” ๋ฉ”์†Œ๋“œ์ž…๋‹ˆ๋‹ค.) ์ €๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•˜์—ฌ.. 2020. 8. 28.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’ ํ’€์ด: ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์€ ๊ณต๋ฐฑ์„ ๊ธฐ์ค€์œผ๋กœ ์ˆซ์ž๋“ค์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๊ฐ€?๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์›ํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐฐ์—ดํ˜•ํƒœ๋กœ ๋ฌธ์ž๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด "์•ˆ๋…•ํ•˜์„ธ์š”.์ €๋Š” ์•ˆ์˜ํ›ˆ์ž…๋‹ˆ๋‹ค.๋งŒ๋‚˜์„œ ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค." ๋ผ๋Š” ๋ฌธ์žฅ์ด ์žˆ๋‹ค๋ฉด ์ด ๋ฌธ์žฅ์„ "."์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„๊ฒŒ ๋˜๋ฉด ["์•ˆ๋…•ํ•˜์„ธ์š”",์ €๋Š” ์•ˆ์˜ํ›ˆ์ž…๋‹ˆ๋‹ค","๋งŒ๋‚˜์„œ ๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค"]๋กœ ์ด๋ฃจ์–ด์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ๋ฌธ์žฅ์ธ s๋ฅผ " "(๊ณต๋ฐฑ)์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„์–ด์ค๋‹ˆ๋‹ค. => s.components(separatedBy: " ") map์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ’๋“ค์„ Intํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.(์–‘์ˆ˜์ธ ์ˆซ์ž๋Š” ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์ •๋ ฌํ•˜๋ฉด ๋˜์ง€๋งŒ ์Œ์ˆ˜๋Š” ์–‘์ˆ˜์™€ ๋˜‘๊ฐ™์ด ์ •๋ ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— Intํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.) => .map{Int($.. 2020. 8. 28.
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋•…๋”ฐ๋จน๊ธฐ Swift ๋ฌธ์ œ ์„ค๋ช… ๋•…๋”ฐ๋จน๊ธฐ ๊ฒŒ์ž„์„ ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋•…๋”ฐ๋จน๊ธฐ ๊ฒŒ์ž„์˜ ๋•…(land)์€ ์ด Nํ–‰ 4์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๋ชจ๋“  ์นธ์—๋Š” ์ ์ˆ˜๊ฐ€ ์“ฐ์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค. 1ํ–‰๋ถ€ํ„ฐ ๋•…์„ ๋ฐŸ์œผ๋ฉฐ ํ•œ ํ–‰์”ฉ ๋‚ด๋ ค์˜ฌ ๋•Œ, ๊ฐ ํ–‰์˜ 4์นธ ์ค‘ ํ•œ ์นธ๋งŒ ๋ฐŸ์œผ๋ฉด์„œ ๋‚ด๋ ค์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, ๋•…๋”ฐ๋จน๊ธฐ ๊ฒŒ์ž„์—๋Š” ํ•œ ํ–‰์”ฉ ๋‚ด๋ ค์˜ฌ ๋•Œ, ๊ฐ™์€ ์—ด์„ ์—ฐ์†ํ•ด์„œ ๋ฐŸ์„ ์ˆ˜ ์—†๋Š” ํŠน์ˆ˜ ๊ทœ์น™์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, | 1 | 2 | 3 | 5 | | 5 | 6 | 7 | 8 | | 4 | 3 | 2 | 1 | ๋กœ ๋•…์ด ์ฃผ์–ด์กŒ๋‹ค๋ฉด, 1ํ–‰์—์„œ ๋„ค๋ฒˆ์งธ ์นธ (5)๋ฅผ ๋ฐŸ์•˜์œผ๋ฉด, 2ํ–‰์˜ ๋„ค๋ฒˆ์งธ ์นธ (8)์€ ๋ฐŸ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ํ–‰๊นŒ์ง€ ๋ชจ๋‘ ๋‚ด๋ ค์™”์„ ๋•Œ, ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ ์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’์„ returnํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์œ„ ์˜ˆ์˜ ๊ฒฝ์šฐ, 1ํ–‰์˜ ๋„ค๋ฒˆ์งธ ์นธ .. 2020. 8. 27.
FireStore ๋ณตํ•ฉ์ฟผ๋ฆฌ์—๋Ÿฌ(Error Domain=FIRFirestoreErrorDomain Code=9) FireStore๋Š” whereField,orderBy,limit ๋“ฑ์˜ ์ฟผ๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. whereField => isEqualTo,isLessThan,isGreaterThan ๋“ฑ ๊ฐ’์ด ์ž‘๊ฑฐ๋‚˜,๊ฐ™๊ฑฐ๋‚˜,๊ฐ™์€ ํ•„๋“œ๋ช…์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. orderyBy => descending,ascending์œผ๋กœ ๊ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ๊ณผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ํ•„๋“œ๋ช…์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. limit => ์›ํ•˜๋Š” ๊ฐฏ์ˆ˜๋งŒํผ ๋ฌธ์„œ๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. "cities"๋ผ๋Š” ์ฝœ๋ ‰์…˜์—์„œ "capital"์ด true์ด๊ณ  "country"๊ฐ€ "China"์ธ ๋ฌธ์„œ๋ฅผ "population"์˜ ๊ฐ’์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋ฌธ์„œ๋“ค์„ ๊ฐ€์ ธ์˜ค๋ ค๊ณ  ํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ .. 2020. 8. 27.
728x90
๋ฐ˜์‘ํ˜•