๐Ÿ“‘ Project

์•ˆ๋…•ํ•˜์„ธ์š”~!์˜ค๋Š˜์€ ํผ์Šค๋„ ๋ชจ๋นŒ๋ฆฌํ‹ฐ์•ฑ์—์„œ ํƒ€์ด๋จธ๋ฅผ ์ด์šฉํ•ด์„œ ์ด์šฉ์‹œ๊ฐ„์„ ๊ตฌํ˜„ํ•œ ๋ถ€๋ถ„์„ ๊ธฐ๋กํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!โœจํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ ์ค‘ ๊ธฐ๊ฐ„์ผ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์ •์‹ ์—†์ด ๋‹ฌ๋ฆฌ๋‹ค ๋ณด๋‹ˆ ๊ธฐ๋ก์„ ๋งŽ์ด ๋ชปํ•œ ์ ์ด ์•„์‰ฌ์›Œ์„œ์ด๋ฒˆ์ฃผ๋Š” ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ ์ค‘์— ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ์„ ์œ„์ฃผ๋กœ ํฌ์ŠคํŒ…์„ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค~!๋„ˆ๋ฌด๋„ˆ๋ฌด ๋ฐ”๋น ๋„ ๊ธฐ๋ก์€ ๊ผญ ์ฑ™๊ธฐ๊ธฐโญ๏ธ   ์ดˆ๊ธฐ๊ตฌํ˜„๋ฐฉ๋ฒ•ํ‚ฅ๋ณด๋“œ์˜ ๋Œ€์—ฌํ•˜๊ธฐ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ, ํ‚ฅ๋ณด๋“œ์˜ ๋Œ€์—ฌ์‹œ๊ฐ„์„ ๋ณด์—ฌ์ฃผ๋„๋ก UI๋ฅผ ๊ตฌ์„ฑํ•˜์˜€์–ด์š”!์ฒ˜์Œ์—๋Š” ๋Œ€์—ฌํ•œ ํ‚ฅ๋ณด๋“œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ์— "๋Œ€์—ฌํ•˜๊ธฐ" ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ์˜ ์‹œ๊ฐ„์„ ์ €์žฅํ•ด ๋‘” ๋’ค ๊ทธ ์‹œ๊ฐ„๊ณผ ํ˜„์žฌ์˜ ์‹œ๊ฐ„์˜ ์ฐจ๋ฅผ ๊ตฌํ•˜์—ฌ ์ด์šฉ์‹œ๊ฐ„์ด ์ €์žฅํ•˜๋„๋ก ๊ตฌํ˜„ํ•˜์˜€์–ด์š”. func calculateKickboardTotalTime() -> Int { guard let start = getUserDefa..
์•ˆ๋…•ํ•˜์„ธ์š”~!์˜ค๋Š˜์€ ์ƒˆ๋กœ์šด ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•œ ๋‚ ์ž…๋‹ˆ๋‹ค!ํŒ€์›๋“ค๊ณผ ์ƒ์˜ ๋์— ํผ์Šค๋„ ๋ชจ๋นŒ๋ฆฌํ‹ฐ์•ฑ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์–ด์š”~!MapKit์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•ด ๋ด์„œ ๊ผญ ๋„์ „ํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ์•ฑ์ด์—ˆ์Šต๋‹ˆ๋‹ค!   ์ดˆ๊ธฐ ์™€์ด์–ด ํ”„๋ ˆ์ž„ ์ดˆ๊ธฐ์˜ ์™€์ด์–ด ํ”„๋ ˆ์ž„์ž…๋‹ˆ๋‹ค. ์ €ํฌ๋Š” GCOO ์•ฑ์„ ๋ชจ๋ฐฉํ•˜์—ฌ ์•ฑ์„ ๋””์ž์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค~! ์ด 5๊ฐœ์˜ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.๋กœ๊ทธ์ธ ํ™”๋ฉดํšŒ์›๊ฐ€์ž… ํ™”๋ฉด๋งต ํ™”๋ฉด์‚ฌ์šฉ์ž ํ™”๋ฉด๋Œ€์—ฌ ํ™”๋ฉด   ์ด๋ฒˆ์— ์ œ๊ฐ€ ๋งก์€ ๊ตฌํ˜„ ๋ถ€๋ถ„์€ ์‚ฌ์šฉ์ž ํ™”๋ฉด์ž…๋‹ˆ๋‹ค!โœจ์‚ฌ์šฉ์ž ํ™”๋ฉด ( ๋งˆ์ดํŽ˜์ด์ง€ ) ๊ตฌํ˜„ ๊ตฌํ˜„ ์ „ ๋กœ์ง ๊ตฌ์ƒํ•˜๊ธฐ ์ œ๋ชฉ ๋ถ€๋ถ„์€ ๋’ค๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ์ด ๋˜๋Š” ๋‚ด๋น„๊ฒŒ์ด์…˜ ๋ฐ”๋ฅผ ์ด์šฉํ•˜์—ฌ,ํ”„๋กœํ•„, ๋Œ€์—ฌ์ค‘, ์ด์ „ ๋Œ€์—ฌ ๋ชฉ๋ก ๋ถ€๋ถ„์€ ํ…Œ์ด๋ธ” ๋ทฐ์˜ ์„ธ์…˜์„ ๋‚˜๋ˆ„์–ด์„œ ๊ตฌํ˜„์„ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์–ด์š”~!   ? View๋กœ ๊ตฌํ˜„ํ•ด๋„ ๋˜๋Š”๋ฐ ..
๋งˆ์ง€๋ง‰์œผ๋กœ ์•ฑ์˜ ์•„์ด์ฝ˜์„ ๋ณ€๊ฒฝํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค! ChatGPT์—๊ฒŒ ์•ฑ ์•„์ด์ฝ˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๋ช‡ ๊ฐœ ์ถ”์ฒœ ๋ฐ›์•˜๋Š”๋ฐ, ์—ฌ๊ธฐ๊ฐ€ ์•„์ฃผ ํŽธํ•˜๋”๋ผ๊ตฌ์š”~! iOS ์•„์ด์ฝ˜ ๋งŒ๋“œ๋Š” ์‚ฌ์ดํŠธ IconKitchen ( ๋งํฌ ์ฒจ๋ถ€๊ฐ€ ์•ˆ๋ผ์š”..ใ…œ ) AppIcon ์„ค์ •ํ•˜๊ธฐ ๋จผ์ € iphone ์•„์ด์ฝ˜์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”! Assets์˜ AppIcon์„ ์šฐํด๋ฆญํ•œ ํ›„์— Show in Finder๋ฅผ ํด๋ฆญํ•ด์ฃผ์„ธ์š”! AppIcon.appiconset ํด๋”์— ๋“ค์–ด๊ฐ€์„œ ์ž์‹ ์ด ๋งŒ๋“  iosIcon ํด๋”์˜ ๋‚ด์šฉ๋ฌผ์„ ๋ณต์‚ฌํ•ด์„œ ( cmd + c ) ๋ถ™์—ฌ๋„ฃ์–ด์ฃผ๋ฉด ๋~! ( cmd + v ) ์™„์ „ ๊ฐ„๋‹จํ•ด์„œ ๋†€๋ž์–ด์š”!! ์ ์šฉ ํ™”๋ฉด ๊ท€์—ฌ์šด Wish ์•ฑ ์•„์ด์ฝ˜์ด ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค~!
์˜ค๋Š˜์€ ์•„๋‹ˆ ์–ด์ œ๋Š” ๋ฉ”์ธ ํ™”๋ฉด์— ์žˆ๋Š” ์ด๋ฏธ์ง€๋ฅผ ์Šค์™€์ดํ”„ํ•˜์—ฌ ์ธ๋„ค์ผ ๋Œ€์‹ ์— ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด์„œ ๊ทธ ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์›ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ScrollView์™€ UIPageControl์„ ์‚ฌ์šฉํ•˜๋”๋ผ๊ตฌ์š”! ์–ด์ œ ๊ตฌํ˜„ํ–ˆ์ง€๋งŒ, ์˜ค๋Š˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ ๋Š” ์ด์œ ๋Š” ์ƒ๊ฐ๋ณด๋‹ค UIPageControl์—์„œ ๋ณต์žกํ•œ ๋ถ€๋ถ„์ด ์žˆ์–ด์„œ ์ถ”๊ฐ€์ ์ธ ๊ณต๋ถ€๋ฅผ ํ•œ ํ›„์— ๋Œ์•„์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ด…์‹œ๋‹ค!!๐Ÿ˜„ UIPageControl์—๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”๐Ÿ’— https://jihae-qu.tistory.com/87 [ UIKit ] UIPageControl #1 UIPageControl UIPageControl์€ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋‚˜ ์—ฌ๋Ÿฌ ์žฅ์˜ ์‚ฌ์ง„๋“ค์˜ ์œ„์น˜๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ผ๋ จ์˜ ์ ๋“ค์ž…๋‹ˆ๋‹ค. page..
์˜ค๋Š˜์€ ๋ฉ”์ธํ™”๋ฉด๊ณผ TableView์— Pull to refresh ( ๋‹น๊ฒจ์„œ ์ƒˆ๋กœ๊ณ ์นจ ) ๋ฅผ ์ ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. UIRefreshControl UIRefreshControl๋Š” Table View์™€ Collection View๊ฐ€ ์ƒ์†๋ฐ›๊ณ  ์žˆ๋Š” UIScrollView์— ์—ฐ๊ฒฐํ•˜๋Š” ํ‘œ์ค€ Control์ž…๋‹ˆ๋‹ค. Content๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•  ์ˆ˜ ์žˆ๋Š” Control๋ฅผ ์ œ๊ณตํ•˜๋Š” object์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์Šคํฌ๋กค์ด ๊ฐ€๋Šฅํ•œ Content ์˜์—ญ์„ ์•„๋ž˜๋กœ ๋“œ๋ž˜๊ทธํ•˜๋ฉด refresh control์ด ํ‘œ์‹œ๋˜๊ณ , progress indicator๊ฐ€ ์• ๋‹ˆ๋ฉ”์ด์…˜ํ™” ๋˜์–ด ์•ฑ์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์ด ์•Œ๋ฆผ์„ ์‚ฌ์šฉํ•ด content๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ refresh control์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Target-action ๋ฉ”์ปค๋‹ˆ์ฆ˜ UIRefreshC..
CoreData์— ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๋Š” ๊ฒƒ์— ์ด์–ด ์ƒˆ๋กœ์šด TableViewController๋ฅผ ์‚ฌ์šฉํ•ด CoreData์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ tableView์— ์ถœ๋ ฅํ•˜๊ณ , ํ•ด๋‹น tableView ์œ„์— ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด ๋ฒ„ํŠผ ํด๋ฆญ์‹œ CoreData์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ’ช๐Ÿป TableView UI ๋งŒ๋“ค๊ธฐ ์šฐ์„  TableView์˜ UI๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฉ”์ธํ™”๋ฉด์—์„œ navigationController๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ navigationItem์•ˆ์˜ ๋ฒ„ํŠผ ํด๋ฆญ์‹œ modal๋กœ TableViewController๊ฐ€ ๋œจ๋„๋ก ๊ตฌํ˜„์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. WishList๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” View๋„ 29CM์˜ ์–ดํ”Œ์˜ ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋ฅผ ๋ณด๊ณ  ๋น„์Šทํ•˜๊ฒŒ UI๋ฅผ ๊ทธ๋ ค์ฃผ์—ˆ์–ด์š”. ์—ฌ๋Ÿฌ ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋Š” ์ฒดํฌ ๋ฒ„ํŠผ์ด ๋”ฐ๋กœ ํ•„์š”๊ฐ€ ์—†์–ด์„œ ์‚ญ์ œ ๋ฒ„ํŠผ์€..
์•ˆ๋…•ํ•˜์„ธ์š”! ๐ŸŒฑ ์˜ค๋Š˜์€ ์–ด์ œ ๋งŒ๋“  ์œ„์‹œ๋ฆฌ์ŠคํŠธ์˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ, ํ•ด๋‹น ์œ„์‹œ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฝ”์–ด๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•˜๋Š” ์ž‘์—…์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค! ํ•จ๊ป˜ ๊ฐ€๋ณด์‹œ์ฃ ! CoreData ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์šฐ์„  coreData์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผ๊ฒ ์ฃ ?! URLSession์—์„œ ๊ฐ€์ ธ์™”๋˜ ๋ฐ์ดํ„ฐ ์ •๋ณด๋“ค ์ค‘ images๋ฅผ ์ œ์™ธํ•˜๊ณ  ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด์ฃผ์—ˆ์–ด์š”! struct Product: Codable { let id: Int let title, description: String let price: Int let discountPercentage: Double let brand, category: String let thumbnail: String let images: [String] } Editor -> Create NSManagedOb..
์˜ค๋Š˜์€ ์œ„์‹œ ๋ฆฌ์ŠคํŠธ์˜ UI์ž‘์—…๊ณผ ํ™”๋ฉด์— Data๋ฅผ ๋„์šฐ๋Š” ์ž‘์—…์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค! ๊ทธ๋Ÿผ ์‹œ์ž‘ํ•ด๋ณผ๊นŒ์šง?! โœจ WishListApp UI WishListApp์˜ ๋ฉ”์ธํ™”๋ฉด์€ ๊ทธ์ € ๊น”๋”ํ•˜๊ณ  ์‹ฌํ”Œํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋ผ๊ณ  ์ƒ๊ฐ์„ ํ–ˆ์–ด์š”! ๊ทธ๋ž˜์„œ ํ‰์†Œ์— ์ œ๊ฐ€ ์ฆ๊ฒจ์“ฐ๋Š” ์•ฑ์ธ " 29CM "์˜ ์ƒํ’ˆ ํ™”๋ฉด๊ณผ ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋ณด์ž๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์•„๋ž˜ Add to Wish ๋ฒ„ํŠผ๊ณผ Next to Item ์ด ์žˆ๋Š” View๋Š” ๊ณ ์ •์ธ ์ƒํƒœ๋กœ Description์ด ๊ธธ์–ด์ง€๊ฒŒ ๋˜๋ฉด View๊ฐ€ ์Šคํฌ๋กค์ด ๋˜๊ฒŒ๋” ๊ตฌํ˜„์„ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๊ธ€์”จ์ฒด๋Š” ๋‹ค๋ฅด์ง€๋งŒ ๊ทธ๋ž˜๋„ ์ •๋ง ๊น”๋”ํ•œ UI ๊ฐ™์•„์š”!ใ…Žใ…Ž WishListApp Data ์ ์šฉํ•˜๊ธฐ URLSession์„ ํ†ตํ•ด ๋ณ€ํ™˜ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ProductDataManager์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค..
EarthSea
'๐Ÿ“‘ Project' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก