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

๐ŸŽ iOS138

[Design Pattern] MVP ํŒจํ„ด์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Model - View - Presenter๋กœ ์ด๋ค„์ ธ์žˆ๋Š” M.V.P ๋””์ž์ธ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ถ€ํ„ฐ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. MVP๋ž€? Model - View - Presenter ๋กœ ์ด๋ค„์ง„ ๋””์ž์ธ ํŒจํ„ด์ด๋ฉฐ MVC์—์„œ Controller๊ฐ€ ํ•˜๋Š” ์—ญํ• ์„ Presenter๊ฐ€ ํ•œ๋‹ค๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค. "๊ทธ๋Ÿฌ๋ฉด MVC ์“ฐ๋ฉด ๋˜์ง€ ์™œ MVP๋ฅผ ์จ?" MVC๋Š” Model๊ณผ View๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด ์˜์กด๊ด€๊ณ„๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ MVP๋Š” Model๊ณผ View ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ณ  ์˜ค์ง Presenter๋ฅผ ํ†ตํ•ด์„œ ์ƒํƒœ๋‚˜ ๋ณ€ํ™”๋ฅผ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ View์™€ ๋น„์ง€๋‹ˆ์Šค ๋กœ์ง์ด ์™„์ „ํžˆ ๋ถ„๋ฆฌ๊ฐ€ ๋˜์–ด ํ…Œ์ŠคํŠธ๊ฐ€ ์šฉ์ดํ•ด์ง„๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ทฐ๊ฐ€ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๊ณผ์ •์„.. 2021. 8. 11.
[iOS] ํ‘ธ์‰ฌ ์•Œ๋ฆผ ํƒญํ–ˆ์„ ๋•Œ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ(How to handle Push Notification?) ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์œ ์ €๊ฐ€ ํ‘ธ์‰ฌ ์•Œ๋ฆผ๋ฐ”๋ฅผ ํƒญํ–ˆ์„ ๋•Œ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Preview AppDelegate ๋จผ์ € UserNotifications๋ฅผ import ํ•ด์ค๋‹ˆ๋‹ค. import UserNotifications ์•„๋ž˜์™€ ๊ฐ™์ด userNotificationCenter๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. let userNotificationCenter = UNUserNotificationCenter.current() didFinishLaunchingWithOptions ๋ฉ”์„œ๋“œ์— ์œ„์—์„œ ๋งŒ๋“ค์–ด์ค€ userNotificationCenter์˜ ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ๋ฅผ self๋กœ ํ•ด์ค๋‹ˆ๋‹ค. application.registerForRemoteNotifications()๋„ ์ž‘์„ฑํ•ด.. 2021. 8. 9.
[iOS] iOS ์•ฑ ์ถœ์‹œํ•˜๋Š” ๋ฒ• ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•ฑ์„ ์ถœ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Xcode Xcode ์ƒ๋‹จ ํƒญ์—์„œ Product-Archive๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. (๋””๋ฐ”์ด์Šค๋Š” ์‹ค์ œ ๋””๋ฐ”์ด์Šค์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ฑฐ๋‚˜ Any iOS Device๋ฅผ ์„ ํƒํ•ด์ฃผ์„ธ์š”) Archive๊ฐ€ ๋ชจ๋‘ ๋๋‚ฌ๋‹ค๋ฉด Distribute App์„ ๋ˆŒ๋Ÿฌ์„œ ๋ฐฐํฌํ•ด์ค๋‹ˆ๋‹ค. (Archive๋Š” ์•ฑ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ํ•œ 10๋ถ„ ์ •๋„ ์†Œ์š”๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.) ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ณด๋„ค์š”. App Store Connect๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. ์•ฑ์Šคํ† ์–ด ์ปค๋„ฅํŠธ์— Upload ํ•ด์ฃผ์„ธ์š”! ๋ฐฐํฌ ์˜ต์…˜์„ ์„ ํƒํ•˜๋Š”๋ฐ ๋‘ ๊ฐœ ๋‹ค ์„ ํƒํ•ด์ฃผ์„ธ์š”! ์•ฑ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋ฌผ์–ด๋ณด๋„ค์š”. Automatically manage signing์„ ์„ ํƒํ•ด์ค๋‹ˆ๋‹ค. ์•ฑ์— .. 2021. 7. 29.
[iOS] UIKit์—์„œ SwiftUI Preview ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์–ผ๋งˆ ์ „์— ์œ ํŠœ๋ธŒ์—์„œ ๋งŒํ™”๊ฒฝ iOS ๊ฐœ๋ฐœ๊ธฐ๋ฅผ ๋ณด๋‹ค๊ฐ€ (https://www.youtube.com/watch?v=W_1FoBtaV7A) UI๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์žฅ๋‹จ์ ์„ ๋ชจ๋‘ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š”๊ฒŒ UIKit์—์„œ Preview๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜๋”๋ผ๊ตฌ์š”. Preview๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋กœ ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•˜๋”๋ผ๋„ ์ง๊ด€์ ์œผ๋กœ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๊ณ  ๋˜ํ•œ ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ ์ƒ๊ธฐ๋Š” ์ถฉ๋Œ ๋ฌธ์ œ ๋“ฑ์„ ์—†์• ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์ฃ ! ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ UIKit์—์„œ Preview๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค~ UIViewController + Extension ์•„๋ž˜์™€ ๊ฐ™์ด ํ”„๋ฆฌ๋ทฐ ์ต์Šคํ…์…˜์„ ๋งŒ๋“ค์–ด์ค˜์„œ ์–ด๋–ค ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋“  ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค. import Swif.. 2021. 7. 28.
[iOS] TestFlight ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž ์ดˆ๋Œ€ํ•˜๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ธ€์—์„œ ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐฐํฌํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”. ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ ์‹ฌ์‚ฌ๋ฅผ ๊ฑฐ์น˜๊ณ  ํ•œ ๋ช‡์‹œ๊ฐ„ ๋’ค? ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ํ…Œ์ŠคํŠธ ํ”Œ๋ผ์ดํŠธ์— ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์‚ฌ์šฉ์ž๋ฅผ ์ดˆ๋Œ€ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•ด๋ณด๋… ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. App Store Connect ์•ฑ์Šคํ† ์–ด ์ปค๋„ฅํŠธ๋กœ ์ด๋™ํ•˜์‹œ๋ฉด ํ†ต๊ณผ๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด "ํ…Œ์ŠคํŠธ ์ค€๋น„ ์™„๋ฃŒ" ๋ผ๊ณ  ์จ์ ธ์žˆ์„๊ฑฐ์—์š”. ํ…Œ์ŠคํŠธ ๊ธฐ๊ฐ„์€ 90์ผ์ด ์ฃผ์–ด์ง€๋„ค์š”. ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„  App Store Connect์˜ ์‚ฌ์šฉ์ž ๋ฐ ์•ก์„ธ์Šค๋กœ ๊ฐ€์ค๋‹ˆ๋‹ค. ์‹ ๊ทœ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๊ณ  ์ดˆ๋Œ€๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค. ์ดˆ๋Œ€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋˜์—ˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉ์ž์— ์ •๋ณด๊ฐ€ ์ถ”๊ฐ€๊ฐ€ ๋˜๊ณ  ์ดˆ๋Œ€ ์žฌ์ „์†ก์ด๋ผ๋Š” ๋ฌธ๊ตฌ๊ฐ€ ๋ณด์ผ๊ฑฐ์—์š”. ํ•ด๋‹น ์ด๋ฉ”์ผ๋กœ ์ด๋™ํ•˜์…”์„œ.. 2021. 7. 22.
[iOS] TestFlight ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์•ฑ์„ ์ถœ์‹œํ•˜๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•ฑ์„ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ…Œ์ŠคํŠธํ”Œ๋ผ์ดํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Xcode ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค. Any iOS Device(arm64)๋กœ ๋งž์ถฐ์ฃผ์‹œ๊ณ  Xcode ์œ—์ชฝ ํƒญ์˜ Product - Archive๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. (Archiveํ•˜๋Š”๋ฐ ๋ช‡๋ถ„์ •๋„ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค..) ๋ฒ„์ „๊ณผ ์ตœ์†Œ๋ฒ„์ „์ด ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ํ™•์ธํ•˜๊ณ  ์•„์นด์ด๋ธŒ๋ฅผ ํ•ด์ฃผ์„ธ์š”! ์•„์นด์ด๋ธŒ ์™„๋ฃŒ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์ฐฝ์ด ๋œฐํ…๋ฐ Distribute App์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. (No suitable application records were found. ๋งŒ์•ฝ ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค๋ฉด App Store Connect์— ํ•ด๋‹น ์•ฑ์ด ๋“ฑ๋ก๋˜์ง€.. 2021. 7. 21.
[iOS] UI Test ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ํฌ์ŠคํŒ…์—” Unit Test์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค˜๋Š”๋ฐ์š” ์˜ค๋Š˜์€ UI๋ฅผ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜ ์žˆ๋Š” UI Test์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ UITest Bundle ๋งŒ๋“ค๊ธฐ Project - General ํƒญ์œผ๋กœ ์ด๋™ํ•˜์…”์„œ ์™ผ์ชฝ ํ•˜๋‹จ ๋ถ€๋ถ„์— +๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. ๊ทธ๋ฆฌ๊ณค ui๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  UI Testing Bundle์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”. Storyboard ์•„๋ž˜์™€ ๊ฐ™์ด ํšŒ์›๊ฐ€์ž… ํ•˜๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๊ตฌ์„ฑํ• ๊ฑด๋ฐ์š”. ์ด๋ฉ”์ผ ํ…์ŠคํŠธํ•„๋“œ,๋น„๋ฐ€๋ฒˆํ˜ธ ํ…์ŠคํŠธํ•„๋“œ,๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ํ…์ŠคํŠธํ•„๋“œ,ํšŒ์›๊ฐ€์ž… ๋ฒ„ํŠผ์œผ๋กœ ๊ตฌ์„ฑํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. SignupViewController IBOutlet์„ ๋ชจ๋‘ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๊ณ  signupButton์„ ๋ˆŒ๋ €์„ ๋•Œ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ํ™•์ธ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ๊ฒฝ๊ณ ์ฐฝ์„ ๋„์šฐ๋„๋ก ํ•˜์˜€.. 2021. 7. 20.
[iOS] Unit Test์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ธฐ ์•ˆ๋…•ํ•˜์„ธ์š” Foma๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ Xcode์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ๋‹›ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ „๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์ค‘์š”์„ฑ์€ ์ •๋ง ๊ฐ•์กฐ๋˜์—ˆ๊ณ  ์ €๋„ ํ•ด์•ผ์ง€...ํ•ด์•ผ์ง€.. ํ•˜๋ฉด์„œ ๋ฏธ๋ฃจ๋‹ค๊ฐ€ ์ด์ œ์•ผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ๊ณต๋ถ€ํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Unit Test Bundle ๋งŒ๋“ค๊ธฐ ๋จผ์ € ์œ ๋‹›ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์‹œ์— Include Tests ์ฒดํฌํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ์ด๊ฑฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด๋ฏธ ๋งŒ๋“ค์–ด๋ฒ„๋ ธ๋‹ค๋ฉด Project - General ํƒญ์œผ๋กœ ์ด๋™ํ•˜์‹ ๋’ค ์™ผ์ชฝ ํ•˜๋‹จ ๋ถ€๋ถ„์— + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”. ๊ทธ ๋‹ค์Œ Unit์„ ๊ฒ€์ƒ‰ํ•˜์‹œ๋ฉด Unit Testing Bundle์ด ์žˆ์„๊ฑฐ์—์š” ์ด๊ฑธ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. Unit Test ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ UnitTest Exam.. 2021. 7. 19.
[iOS/UI] ์ปฌ๋ ‰์…˜๋ทฐ์…€ ์ž๋™์œผ๋กœ ํฌ๊ธฐ ์กฐ์ •ํ•˜๊ณ  ์™ผ์ชฝ ์ •๋ ฌํ•˜๊ธฐ (CollectionViewCell Automaticsize & LeftAlign) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์…€์„ ์™ผ์ชฝ์œผ๋กœ ์ •๋ ฌ์‹œํ‚ค๊ณ  ์…€ ์•ˆ์— ์žˆ๋Š” ํ…์ŠคํŠธ์— ๋”ฐ๋ผ์„œ ์ž๋™์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋Š” ๊ฒƒ์„ ์•Œ์•„๋ณด๋„๋ก ํ• ๊ฒŒ์š”! (์ผ๋ฐ˜์ ์œผ๋กœ ์ปฌ๋ ‰์…˜๋ทฐ์…€์„ ๋งŒ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ ๊ฑฐ์—์š”!) ์˜ค๋Š˜์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ StoryBoard ์Šคํ† ๋ฆฌ๋ณด๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ •ํ•ด์ฃผ์„ธ์š”. CollectionViewCell ์ปฌ๋ ‰์…˜๋ทฐ์…€์— ๋ ˆ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. class CollectionViewCell: UICollectionViewCell { @IBOutlet weak var label: UILabel! } ViewController ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์ปฌ๋ ‰์…˜๋ทฐ๋ฅผ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. @IBOutlet weak var collection: UICollectionView! ์ปฌ๋ ‰์…˜๋ทฐ ๋”œ๋ฆฌ๊ฒŒ์ดํŠธ.. 2021. 6. 29.
[Design Pattern] ReactorKit์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ RxSwift์™€ MVVM ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ• ๋•Œ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ด๋Š” ReactorKit์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ReactorKit์ด๋ž€? ReactorKit ๊ณต์‹ ๊นƒํ—ˆ๋ธŒ์—์„œ๋Š” ์ด๋ ‡๊ฒŒ ์†Œ๊ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ReactorKit์€ ๋ฐ˜์‘ํ˜• ๋ฐ ๋‹จ๋ฐฉํ–ฅ Swift ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ์œ„ํ•œ ํ”„๋ ˆ์ž„ ์›Œํฌ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…๋“œ๋ฆฌ๋ฉด ReactorKit์€ ์•„๋ž˜์™€ ๊ฐ™์ด Reactor์™€ View๋ฅผ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š”๋ฐ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์„ Action๊ณผ State๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ViewModel ์—ญํ• ์„ Reactor๊ฐ€ ํ•˜๋Š”๋ฐ ์ด ViewModel์—์„œ ์ผ์–ด๋‚˜๋Š” ๋ฐ˜์‘ํ˜• ์ด๋ฒคํŠธ๋“ค์„ ์•ก์…˜๊ณผ ์ƒํƒœ๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์ด์ฃ ! ReactorKit์„ ์“ฐ๋ฉด ๋ญ๊ฐ€ ์ข‹์€๋ฐ? 1. ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์‰ฝ๋‹ค. ๋ทฐ์—์„œ.. 2021. 6. 17.
[iOS] ํ‚ค๋ณด๋“œ๊ฐ€ ํ…์ŠคํŠธํ•„๋“œ๋ฅผ ๊ฐ€๋ฆด๋•Œ ํ•ด๊ฒฐ๋ฒ•(When the keyboard covers text field) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ํ…์ŠคํŠธํ•„๋“œ๋ฅผ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด ์ •๋ง ์ž์ฃผ ๋งŒ๋‚˜๋Š” ํ‚ค๋ณด๋“œ ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๋ ค๊ณ  ํ•ด์š”. ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ํ‚ค๋ณด๋“œ์˜ ์œ„์น˜๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์งœ๋‹ค๊ฐ€ ํ‚ค๋ณด๋“œ๊ฐ€ ์˜ฌ๋ผ์˜ค๋Š” ์ˆœ๊ฐ„ ํ‚ค๋ณด๋“œ ์•„๋ž˜์— ์žˆ๋Š” ํ…์ŠคํŠธํ•„๋“œ๋‚˜ ๋ฒ„ํŠผ๋“ค์ด ๊ฐ€๋ ค์ง€๊ณค ํ•˜๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ ์ด๊ฒƒ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ๋ฒ•์„ ์ •๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! Preview Storyboard ์•„๋ž˜ ํ™”๋ฉด๊ณผ ๊ฐ™์ด ํ…์ŠคํŠธํ•„๋“œ์™€ ๋ฒ„ํŠผ์ด ๋น„๊ต์  ์•„๋ž˜์— ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. View์—๋Š” Tap Gesture Recognizer๋ฅผ ๋‹ฌ์•„๋†“๊ฒ ์Šต๋‹ˆ๋‹ค. ViewController ์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๋งŒ๋“ค์–ด์ค€ ํ…์ŠคํŠธํ•„๋“œ์™€ ๋ฒ„ํŠผ์„ ์—ฐ๊ฒฐํ•ด์ค๋‹ˆ๋‹ค. @IBOutlet weak var textField: UITextField! @IBOutlet weak va.. 2021. 6. 16.
[iOS] ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ(feat.HealthKit) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ‘Ÿ ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ๋‚ด ์•„์ดํฐ์— ์žˆ๋Š” ๋‚˜์˜ ๊ฑด๊ฐ• ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€๋ณด๊ณ  ๋˜ ๊ธฐ๋กํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Info.plist ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘ ์š”์ฒญ์„ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. NSHealthShareUsageDescription ๋Š” ์ƒˆ๋กœ์šด ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์„ ๋•Œ NSHealthUpdateUsageDescription ๋Š” ๊ธฐ์กด์˜ ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ ํ•„์š”ํ•ด์š”. NSHealthShareUsageDescription ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ๋•Œ ํ•„์š”ํ•ด์š”. NSHealthUpdateUsageDescription ๊ฑด๊ฐ• ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ ํ•„์š”ํ•ด์š”. Signing & Capability ์•ฑ์˜ Targets์— Signing & Capbility์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด HealthKit์„ ์ถ”๊ฐ€ํ•ด์ฃผ์„ธ์š”! ๋ฐ.. 2021. 6. 8.
728x90
๋ฐ˜์‘ํ˜•