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

๐ŸŽ iOS122

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.
[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.
iOS Date Picker Style ์•Œ์•„๋ณด๊ธฐ Objective c ์ด์ „ ๋ฒ„์ „์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํœ ๋กœ ๋‚˜์™”๋˜ ๋ฐ์ดํŠธ ํ”ฝ์ปค ์Šคํƒ€์ผ์ด ํ˜„ ๋ฒ„์ „์—์„œ ์ปดํŽ™ํŠธ ํƒ€์ž…์œผ๋กœ ๋‚˜์˜ค๋Š”.... ๊ทธ๋ž˜์„œ ์ด๋ฅผ ๋”ฐ๋กœ ์ง€์ •ํ•ด ์ฃผ๋ ค๋ฉด ์•„๋ž˜์˜ ๋ฐฉ๋ฒ•๊ณผ ๊ฐ™์ด ์Šคํƒ€์ผ์„ ์ง€์ •ํ•ด ์ค˜์•ผ ํ•œ๋‹ค. [datePicker setPreferredDatePickerStyle:UIDatePickerStyleWheels]; UIDatePickerStyleAutomatic ์ž๋™์œผ๋กœ ์ง€์ •ํ•ด ์ฃผ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์‚ฌ์šฉ UIDatePickerStyleCompact ์ปดํŒฉํŠธํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํŠธ ํ”ฝ์ปค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์ด๋ ‡๊ฒŒ ๋ณด์—ฌ์ง€๊ณ  ๋‚ ์งœ๋ฅผ ํ„ฐ์น˜ํ•˜๋ฉด ๋‹ฌ๋ ฅ์ด ๋„์›Œ์ง‘๋‹ˆ๋‹ค UIDatePickerStyleWheels ํœ  ์Šคํƒ€์ผ๋กœ ๋‚˜์˜ค๊ฒŒ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ. ํ…์ŠคํŠธํ•„๋“œ์— ์•…์„ธ์„œ๋ฆฌ ๋ทฐ๋กœ ๋„ฃ๊ณ  ์‹ถ์„ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์Šคํƒ€์ผ UIDatePickerStyleI.. 2020. 12. 28.
Mac์— Realm Studio ์„ค์น˜ํ•˜๊ธฐ (์•…์„ฑ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.) realm.io/kr/products/realm-studio/#download-studio Realm Studio: open, edit, and manage your Realm data Download our cross-platform developer tool for the Realm Database and Realm Platform. Available for Mac, Windows, and Linux. realm.io ์œ„ ๋งํฌ ํด๋ฆญ ์šด์˜์ฒด์ œ์— ๋งž๋Š” ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ํ•œ ์œ„์น˜์— ์žˆ๋Š” Realm Studio๋ฅผ Applications ํด๋”๋กœ ์˜ฎ๊ฒจ ์ฃผ์„ธ์š” dmg ํŒŒ์ผ์€ ์ง€์›Œ์ฃผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์šด๋กœ๋“œ์— ๋Œ€ํ•ด ๋ณ„๋‹ค๋ฅธ ์„ค์ •์„ ํ•˜์ง€ ์•Š์œผ๋ฉด 'Realm Studio'์€(๋Š”) Apple์—์„œ ์•…์„ฑ.. 2020. 10. 25.
iOS์—์„œ MVC์™€ MVVM ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ธฐ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ ๐Ÿ‘‡ iOS MVVM Tutorial: Refactoring from MVC In this iOS tutorial, you’ll learn how to convert an MVC app into MVVM. In addition, you’ll learn about the components and advantages of using MVVM. www.raywenderlich.com ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค๋ณด๋ฉด ์–ด๋–ป๊ฒŒ ์˜์กด์„ฑ์„ ์ค„์ด๊ณ  ๊ฐ ํŠน์ง•์— ๋งž๊ฒŒ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋ฉฐ ๋ณต์žกํ•˜๊ณ  ๋‚œ์žกํ•œ ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋Š” ๋…ธ๋ ฅ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” MVC๋ฅผ ๋ฐฐ์šฐ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋•Œ M์€ model์˜ ์•ฝ์ž๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ์ด๋‚˜ ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค, ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ๋“ฑ์„ ์˜๋ฏธํ•œ๋‹ค. V๋Š” view์˜ ์•ฝ์ž๋กœ์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ.. 2020. 10. 12.
API ์‚ฌ์ดํŠธ ๋ชจ์Œ (์ƒ์‹œ ์—…๋ฐ์ดํŠธ) https://www.weatherbit.io/ Weatherbit | Weather API - Historical Weather API Simple. Powerful. Reliable. Getting access to weather data or historical weather data has never been easier. Unparalleled Forecast Accuracy We leverage the power of forecast models, and machine learning to deliver the most accurate weather forecast API on www.weatherbit.io ๊ฐ€์ž…ํ•ด์„œ free plan์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ œํ•œ๋œ ํšŸ์ˆ˜ ์•ˆ์—์„œ ๊ตญ๊ฐ€, ์ง€์—ญ์˜ ๋‚ ์”จ API.. 2020. 10. 12.