๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€184

Swift 5 beginDisablingInterfaceAutorotation Ignoring ๋””๋ฒ„๊น… -[UIWindow endDisablingInterfaceAutorotationAnimated:] called on without matching -beginDisablingInterfaceAutorotation. Ignoring. ์ •์ƒ์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ํ˜ธ์ถœ ๋˜์ง€ ์•Š๋Š” ๋ฉ”์‹œ์ง€ ์ž…๋‹ˆ๋‹ค. ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋Š” ์•„๋‹ˆ๊ณ  ๊ทธ๋ƒฅ ์ด๋ ‡๋‹ค ~ ์ •๋„์˜ ๋ฉ”์‹œ์ง€ ์ธ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(Ignoring!!!) ์ฝ˜์†”์— ์ฐ์–ด ๋ณด์ง€๋„ ์•Š์•˜๋Š”๋ฐ ์—๋Ÿฌ๋ฅผ ์•Œ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค? ์ •์ƒ์ ์ธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๊ฑด ์•„๋‹ˆ๋‹ˆ๊นŒ ์ด์œ ๋ฅผ ์ฐพ์•„๋ณด์ž๋ฉด ์ฃผ๋กœ ํ‚ค๋ณด๋“œ์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด let textField = UITextField() textField.resignFirstResponder() ์Šคํฌ๋กค ํ•ด์„œ ๋ทฐ๋ฅผ ๋‹ซ์„ ๋•Œ ํŒฌ์ œ์Šค์ฒ˜ ๋๋‚˜๋Š” ์‹œ์ ์—์„œ ํ•œ.. 2021. 7. 12.
SF Symbol ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ธฐ xCode ํ•ด์™ธ ๊ฐœ๋ฐœ ์œ ํŠœ๋ธŒ๋“ค ๋ณด๋ฉด ๊ฒ€์ƒ‰ ํ•„๋“œ์—์„œ sf ๋กœ ๋‹ค์–‘ํ•œ ์•„์ด์ฝ˜ ์กฐํšŒํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋˜๋ฐ sf ์น˜๋‹ˆ๊นŒ ์•ˆ๋‚˜์˜ค๋”๋ผ๊ตฌ์š” ์•Œ๊ณ  ๋ณด๋‹ˆ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๋Š”๊ฑฐ!! developer.apple.com/sf-symbols/ Apple Developer There’s never been a better time to develop for Apple platforms. developer.apple.com ์œ„ ํŽ˜์ด์ง€๋กœ ๋“ค์–ด๊ฐ€ ์ค๋‹ˆ๋‹ค ์˜ค๋ฅธํŽธ ๋ณด๋ฉด์„œ ์Šคํฌ๋กค ๋‚ด๋ฆฌ๋‹ค ๋ณด๋ฉด ์ค‘๊ฐ„์— ์—ฌ๊ธฐ์„œ ๋‹ค์šด๋กœ๋“œ ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ์ค๋‹ˆ๋‹ค. ๋”๋ธ” ํด๋ฆญ ํ•ด์ฃผ์„ธ์šฉ ๊ทธ๋ ‡๋‹ต๋‹ˆ๋‹ค. ์ด์ œ ๊ฒ€์ƒ‰ ํ•„๋“œ์—์„œ sf ๋งŒ ์ณ๋„ ์•„์ด์ฝ˜์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค~~~~~ 2021. 5. 12.
[Swift] PhotoKit ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ ๋ณด๋‹ค ํ›จ์”ฌ ๋ฐฉ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋ผ ์ •๋ฆฌ๊ฐ€ ํ•„์š”ํ•ด ๋ณด์—ฌ์„œ ํฌ์ŠคํŒ… ํ•ด๋ด…๋‹ˆ๋‹ค. ํด๋ž˜์Šค, Privacy, ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ์ˆœ์œผ๋กœ ์‚ดํŽด ๋ณผ ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…์ธ  ๋ชฉ๋ก ํด๋ž˜์Šค ์•Œ์•„๋ณด๊ธฐ Privacy ๊ฐค๋Ÿฌ๋ฆฌ ์ ‘๊ทผ ์‚ฌ์šฉ์ž ๊ถŒํ•œ (์•„์ง ์ž‘์„ฑ์ค‘) ์ธ๋„ค์ผ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ์›๋ณธ ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ ํด๋ž˜์Šค ์•Œ์•„๋ณด๊ธฐ PHAsset : PHObject ํฌํ†  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋‚˜ ๋น„๋””์˜ค, ๋ผ์ด๋ธŒ ํฌํ† ๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. ์—์…‹์€ ์ด๋ฏธ์ง€๋‚˜ ๋น„๋””์˜ค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ๋‹ค. static ๋ฉ”์†Œ๋“œ์ธ fecthAssets์€ PHFetchResult๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ด๋ฏธ์ง€ ์ž์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋ฉด ์•„์ฃผ ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ์™€ ์ž์›์ด ํ•„์š”ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋งŽ์€ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด ํฌ๋ž˜์‰ฌ ๋˜๋Š” ์ผ์ด ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์—.. 2021. 4. 2.
[Swift] ๋ธ๋ฆฌ๊ฒŒ์ดํŠธ ํŒจํ„ด iOS A๋ผ๋Š” ๋ทฐ ์ปจํŠธ๋กค์—์„œ B๋ผ๋Š” ๋ทฐ ์ปจํŠธ๋กค๋กœ ์ด๋™ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค˜์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์Šคํ† ๋ฆฌ๋ณด๋“œ๋ผ๋ฉด segue๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ B์— ํ”„๋กœํผํ‹ฐ๋ฅผ ๋งŒ๋“ค์–ด ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ์— A Bool { if (nameTextField.text != "") { delegate?.updateLabel(nameTextField.text ?? "") nameTextField.resignFirstResponder() } return true } @objc func popViewController() { self.dismiss(animated: true, completion: nil) } } viewDidLoad ์—์„œ๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜์— ๋“ค์–ด๊ฐˆ ๋ฒ„ํŠผ๊ณผ ํ…์ŠคํŠธ ํ•„๋“œ์˜ ๋™์ž‘์„ ์œ„ํ•ด ๋ธ๋ฆฌ๊ฒŒ.. 2021. 3. 24.
[Swift] UIButton ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ addTarget (์ฒ˜์Œ ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ) ์ด๋ฒˆ์— ์•Œ์•„๋ณผ ๊ฑด UIButton์˜ ์ƒ์„ฑ๊ณผ UIControl action ์œผ๋กœ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค~~ ์Šค์œ„ํ”„ํŠธ๋กœ ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•ด ๋ณด์‹œ๊ฑฐ๋‚˜ ๊ณต๋ถ€ํ•˜์‹œ๊ธฐ ์œ„ํ•ด ์ด ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•˜์…จ๋‹ค๋ฉด ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ทฐ๋Š” ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  xcode ์Šค์œ„ํ”„ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธํŒ…๋˜์–ด ์žˆ๋Š” Main.Storyboard ์™€ ViewcController๋ฅผ ๊ฐ€์ง€๊ณ  ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์Šคํ† ๋ฆฌ๋ณด๋“œ ์—†์ด ์ฝ”๋“œ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„์€ ์•„๋ž˜ ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. [Swift] Storyboard ์—†์ด Swift ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ Swift ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ ์‹œํ‚ค๋ฉด ๊ธฐ๋ณธ์œผ๋กœ Main.storyboard๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์žก๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ฉ”์ธ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ.. 2021. 3. 23.
[Swift]UITableViewDataSourcePrefetching ํ…Œ์ด๋ธ” ๋ทฐ์…€์— ๋ฐ์ดํ„ฐ ๋ฏธ๋ฆฌ ๋กœ๋“œ ์‹œํ‚ค๊ธฐ UITableViewDataSourcePrefetching ์€ ํ”„๋กœํ† ์ฝœ์˜ ํ•œ ์ข…๋ฅ˜๋กœ ์‚ฌ์šฉ์ž์˜ ํ™”๋ฉด์—์„œ ๋ณด์—ฌ์ง€๊ธฐ ์ „์— ์…€์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์—ฐ์‚ฐ์ด ๊ธด ๊ฒฝ์šฐ ๋ฏธ๋ฆฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” DataSource ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๊ตณ์ด ์ž˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ์ด๋ฒˆ์— ๋ฐ์ดํ„ฐ๋ฅผ ์™ธ๋ถ€๋กœ ๋ถ€ํ„ฐ ๋ฐ›์•„์™€ ์…€์— ๋ณด์—ฌ์ฃผ๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์•Œ๊ฒŒ ๋˜์–ด ํฌ์ŠคํŒ… ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. prefetch๋ž€? ์ง„ํ–‰ ์ค‘์ธ ์ฒ˜๋ฆฌ์™€ ๋ณ‘ํ–‰ํ•˜์—ฌ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์ „์— ํŒ๋…ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. - ์ถœ์ฒ˜ : ์ปดํ“จํ„ฐ์ธํ„ฐ๋„ทIT์šฉ์–ด๋Œ€์‚ฌ์ „ ์‚ฌ์šฉ์ž ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๋Š” ํ…Œ์ด๋ธ” ๋ทฐ์˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€ ๋”๋ถˆ์–ด ์…€์—์„œ ๋ฏธ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„(์ฒ˜๋ฆฌ)ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ธด ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉฐ tableView(_:cellForRowAt:.. 2021. 3. 19.
[Swift] Storyboard ์—†์ด Swift ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ Swift ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ ์‹œํ‚ค๋ฉด ๊ธฐ๋ณธ์œผ๋กœ Main.storyboard๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์žก๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ฉ”์ธ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ  ์Šคํ† ๋ฆฌ๋ณด๋“œ ์—†์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜ ํŠœํ† ๋ฆฌ์–ผ ์ˆœ์œผ๋กœ ๋”ฐ๋ผ์„œ ์ง„ํ–‰ํ•ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์šฐ์„  ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” Main.storyboard๋ฅผ ์‚ญ์ œํ•ด ์ค๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์„ ํด๋ฆญํ•˜์‹œ๊ณ  ๋ฐฑ์ŠคํŽ˜์ด์Šค ๋ˆ„๋ฅด์‹œ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฐฝ์ด ๋œน๋‹ˆ๋‹ค. ํ•ด๋‹น ํŒŒ์ผ์˜ ์ฐธ์กฐ๋งŒ ์ง€์›Œ ์ค„ ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ํŒŒ์ผ์„ ํœด์ง€ํ†ต์œผ๋กœ ์˜ฎ๊ฒจ ์ฐธ์กฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒŒ์ผ๋„ ๊ฐ™์ด ์ง€์›Œ ์ค„ ๊ฒƒ์ธ์ง€ ๋ฌป๋Š” ์ฐฝ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ Move To Trash ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์™„์ „ํžˆ ์‚ญ์ œ ํ•ด ์ค๋‹ˆ๋‹ค. Remove Reference๋Š” ์ฐธ์กฐ๋งŒ ์ง€์šฐ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์— ํŒŒ์ผ์ด ๋‚จ์•„ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํŒŒ๋ž€ ๋ฒ„ํŠผ ๋ˆ„๋ฅด์ง€ ๋งˆ์‹œ๊ณ  .. 2021. 3. 3.
[JavaScript] Symbol ํƒ€์ž… ์‹ฌ๋ฒŒ ๊ณ ์œ ํ•œ ๊ฐ’์œผ๋กœ ์ž๊ธฐ ์ž์‹ ๋งŒ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค. ์ƒ์„ฑ์€ Symbol()์„ ํ†ตํ•ด์„œ ์ƒ์„ฑํ•˜๋ฉฐ ์œ„์—์„œ ์ƒ์„ฑ๋œ a ๋ณ€์ˆ˜๋Š” Symbol ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค ์•ž์„œ ์ด์•ผ๊ธฐ ํ–ˆ๋“ฏ์ด ์‹ฌ๋ฒŒ์€ ๊ณ ์œ ํ•œ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ๋น„๊ตํ•  ๊ฒฝ์šฐ false๋ฅผ ๋ฑ‰์–ด ๋‚ธ๋‹ค ์‹ฌ๋ฒŒ์— ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•˜๋ฉด ์„ค๋ช…์„ ๋ง๋ถ™์ด๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์šฐ์„  ๊ฐ„๋‹จํ•˜๊ฒŒ Symbol์˜ ์ธ์ž๋กœ ๋ฌธ์ž์—ด์„ ์ง€์ •ํ•  ๊ฒฝ์šฐ ๊ฐ„๋‹จํžˆ ํ•ด๋‹น ์‹ฌ๋ณผ์„ ์„ค๋ช…ํ•˜๊ฒŒ ๋œ๋‹ค. Symbol()์— ์ธ์ž๋ฅผ ์ „๋‹ฌํ•ด์„œ ์‹ฌ๋ณผ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ฐ์–ด๋ดค์„ ๋•Œ Symbol("test") ์ „๋‹ฌํ•œ ์ธ์ž๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ฌ๋ณผ์€ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ๊ณ ์œ ์˜ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์ธ์ž๋ฅผ ๋„˜๊ฒจ์ค€ ๋ณ€์ˆ˜๋ผ ํ•ด๋„ ๋น„๊ตํ•  ๊ฒฝ์šฐ ๋‘ ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ๊ฐ’.. 2021. 2. 20.
[SwiftUI] UserDefault ์—ญํ™œ์„ ํ•˜๋Š” AppStorage AppStorage ๋Š” ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ UserDefault ๊ฐ™์€ ์—ญํ™œ์„ ํ•œ๋‹ค. Property Wrapper ๋กœ์„œ ํ‚ค ๊ฐ’์„ ํ•„์š”๋กœ ํ•œ๋‹ค. ์‚ฌ์šฉ์€ ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด @AppStorage("userName") var userName = "" ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค. @State ํ”„๋กœํผํ‹ฐ ์›Œ๋ ˆํผ ์ฒ˜๋Ÿผ ๊ตฌ์กฐ์ฒด ์•ˆ์—์„œ $๋ณ€์ˆ˜๋ช… ์œผ๋กœ ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค TextField("ํ”Œ๋ ˆ์ด์Šค ํ™€๋” ์ž…๋‹ˆ๋‹ค", text: $userName) 2021. 2. 12.
[SwiftUI] TextField์™€ Toggle ์‚ฌ์šฉํ•˜๊ธฐ ์„ค์ • ํŽ˜์ด์ง€๋‚˜ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” TextField์™€ Toggle Life Cycle์€ ์ˆœ์ˆ˜ํ•˜๊ฒŒ SwiftUI๋กœ ์•ฑ์„ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค๋ฉด SwiftUI app ์„ ๋ผ์ดํ”„ ์‚ฌ์ดํด๋กœ ์ง€์ •ํ•˜๋ฉด ๋˜๊ณ , ๋งŒ์•ฝ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด UIKit app delegate๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค! ์šฐ์„  ์ „์ฒด๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” view ์—ญํ™œ์„ ํ•˜๋Š” body์— NavigationView๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. navigationView๋ฅผ ๋‹ค๋ฃจ๊ธฐ์— VStack์„ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด๋ฆ„์—์„œ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๋“ฏ์ด vertical stack ์ด๊ณ  ๊ณ„์ธต ๊ตฌ์กฐ์—์„œ children view๋ฅผ ์ˆ˜์ง์œผ๋กœ ์Œ“๋Š”๋‹ค. var body: some View { NavigationView { VStack { } .navigationTitle("ํ…Œ์ŠคํŠธ ์•ฑ") }.. 2021. 2. 10.
๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ •๊ทœํ™” 1NF, 2NF, 3NF ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์‹œ ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•˜๋ฉด ์ด์ƒ ํ˜„์ƒ(์‚ฝ์ž… ์ด์ƒ, ์‚ญ์ œ ์ด์ƒ, ๊ฐฑ์‹  ์ด์ƒ)์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ์ตœ์†Œํ•œ์œผ๋กœ ์ค„์—ฌ ์ด์ƒ ํ˜„์ƒ ๋ฐœ์ƒ์„ ์ค„์ด๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ •๊ทœํ™”(Normalization)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ •์ฒ˜๊ธฐ ๊ณต๋ถ€์‹œ ๊ธฐ๋ณธ cs๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒฝํ—˜์ด ์—†๋‹ค๋ฉด ํ•œ๋ฒˆ์ฏค ๋ฐœ๋ชฉ ์žกํž ๋ถ€๋ถ„์ด๋ผ ์ด ๊ธฐํšŒ์— ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๊ธฐ๋กœ! ๋”ฐ๋ผ์„œ ์ •์ฒ˜๊ธฐ ์™ธ์— CS๋ฅผ ๊ณต๋ถ€ํ•˜์‹œ๋Š” ๋ถ„์ด๋ผ๋ฉด ๋’ค๋กœ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”~ 1NF (1์ •๊ทœํ˜•) 1 ์ •๊ทœํ˜•์€ ์›์ž๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์›์ž๋Š” ๊ณ ๋“ฑํ•™๊ต ํ™”ํ•™์—์„œ ํ•œ ๋ฒˆ์ฏค ๋“ค์–ด๋ดค์„ ๋งŒํ•œ ํ™”ํ•™์  ์„ฑ์งˆ์—์„œ ์ด์•ผ๊ธฐํ•˜๋Š” ์›์ž๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์‰ฌ์›Œ์š” ๋” ์ด์ƒ ๋ถ„ํ•ด๋  ์ˆ˜ ์—†๊ณ  ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ํ…Œ์ด๋ธ”์—์„œ ํ–‰๊ณผ ์—ด ์ค‘ ์—ด์˜ ๊ฐ’.. 2020. 12. 29.
iOS Date Picker Style ์•Œ์•„๋ณด๊ธฐ Objective c ์ด์ „ ๋ฒ„์ „์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํœ ๋กœ ๋‚˜์™”๋˜ ๋ฐ์ดํŠธ ํ”ฝ์ปค ์Šคํƒ€์ผ์ด ํ˜„ ๋ฒ„์ „์—์„œ ์ปดํŽ™ํŠธ ํƒ€์ž…์œผ๋กœ ๋‚˜์˜ค๋Š”.... ๊ทธ๋ž˜์„œ ์ด๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•ด ์ฃผ๋ ค๋ฉด ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™์ด ์Šคํƒ€์ผ์„ ์ง€์ •ํ•ด ์ค˜์•ผ ํ•œ๋‹ค. [datePicker setPreferredDatePickerStyle:UIDatePickerStyleWheels]; UIDatePickerStyleAutomatic ์ž๋™์œผ๋กœ ์ง€์ •ํ•ด ์ฃผ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ UIDatePickerStyleCompact ์ปดํŒฉํŠธํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํŠธ ํ”ฝ์ปค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์ด๋ ‡๊ฒŒ ๋ณด์—ฌ์ง€๊ณ  ๋‚ ์งœ๋ฅผ ํ„ฐ์น˜ํ•˜๋ฉด ๋‹ฌ๋ ฅ์ด ๋„์›Œ์ง‘๋‹ˆ๋‹ค UIDatePickerStyleWheels ํœ  ์Šคํƒ€์ผ๋กœ ๋‚˜์˜ค๊ฒŒ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ. ํ…์ŠคํŠธํ•„๋“œ์— ์•…์„ธ์„œ๋ฆฌ ๋ทฐ๋กœ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์Šคํƒ€์ผ UIDatePickerStyleI.. 2020. 12. 28.