[SeSAC] iOS ๊ฐœ์ธ์•ฑ <์ง๊ด€๋กœ๊ทธ> ์ถœ์‹œ ํšŒ๊ณ 

2023. 10. 24. 03:23ยท๐ŸŒฑ SeSAC iOS 3๊ธฐ
๋ชฉ์ฐจ
  1. 0.
  2.  
  3. 1. ์•ฑ ์†Œ๊ฐœ ๐Ÿ€โšพ๏ธ๐Ÿโšฝ๏ธ 
  4. 2. ๊ธฐํš
  5. 4. ๋ฐœ์ƒํ–ˆ๋˜ ์ด์Šˆ์™€ ๋Œ€์‘ ๋ฐฉ๋ฒ•
  6. 5. ๊ฐœ์ธ ํšŒ๊ณ 

 
 
 

 
 
์•ˆ๋…•ํ•˜์„ธ์š”, Callie ์ž…๋‹ˆ๋‹ค.
 
๊ฐœ๋ฐœ์„ ๊ณต๋ถ€ํ•œ์ง€ 3๊ฐœ์›” ์กฐ๊ธˆ ์•ˆ ๋œ ๊ฐœ๋ฐœ ๋‰ด๋น„๋กœ์„œ ๊ฐœ์ธ์•ฑ ์ถœ์‹œ๊ฐ€ ๊ฐ€๋Šฅํ• ๊นŒ? ๋ผ๋Š” ๊ฑฑ์ •์„ ์ž์ฃผ ํ–ˆ์—ˆ๋Š”๋ฐ์š”, ์ €์˜ ๊ฒฝํ—˜์ /๊ฐœ๋ฐœ์  ๋ถ€์กฑํ•จ์€ ๋ฉ˜ํ† ๋‹˜๋“ค๊ณผ ๋™๊ธฐ๋ถ„๋“ค์˜ ๋„์›€์œผ๋กœ ์ •ํ•ด์ง„ ๊ธฐ๊ฐ„ ๋‚ด์— ์•ฑ ์ถœ์‹œ๋ผ๋Š” ๋ชฉํ‘œ๋ฅผ ๋ฌด์‚ฌํžˆ ์ด๋ฃฐ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ—ค๋งฌ ๋•Œ๋งˆ๋‹ค ๊ธฐ๊ฐ€ ๋ง‰ํžˆ๊ฒŒ ์ œ ๋ˆˆ๋†’์ด์— ๋งž์ถฐ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ์‹œ๋˜ ๋ฉ˜ํ† ๋‹˜๋“ค๊ณผ ๋™๊ธฐ๋ถ„๋“ค๊ป˜ ๋ƒ…๋‹ค ๊ฐ์‚ฌํ•จ๋ถ€ํ„ฐ ์ „ํ•˜๋Š” ์ €์˜ ์ฒซ ๋ฒˆ์งธ ์•ฑ <์ง๊ด€๋กœ๊ทธ> ํšŒ๊ณ  ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
 
 
 
 
 


 

 

 


 

0.

- ๊ฐœ๋ฐœ๊ธฐ๊ฐ„: 2023๋…„ 9์›” 25์ผ ~ 2023๋…„ 10์›” 25์ผ (์•ฝ 3์ฃผ)
- ๊ฐœ๋ฐœํ™˜๊ฒฝ: Xcode: 15,  iOS: 15์ด์ƒ, swift: 5.9

 
 
 

 

1. ์•ฑ ์†Œ๊ฐœ ๐Ÿ€โšพ๏ธ๐Ÿโšฝ๏ธ 

 

 

 ์•ฑ์Šคํ† ์–ด ๋งํฌ: https://apps.apple.com/kr/app/%EC%A7%81%EA%B4%80%EB%A1%9C%EA%B7%B8/id6469852233

 

โ€Ž์ง๊ด€๋กœ๊ทธ

โ€Ž[ ์ง๊ด€๋กœ๊ทธ ์ฃผ์š”๊ธฐ๋Šฅ ] # ๋‹ฌ๋ ฅ - ์ง๊ด€ํ•œ ๊ฒฝ๊ธฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ฌ๋ ฅ์„ ํ†ตํ•ด ํ•œ๋ˆˆ์— ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์–ด์š”. - ์ง€๋‚œ ๊ฒฝ๊ธฐ์˜ ์ง๊ด€ ๊ธฐ๋ก๋„ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์–ด์š”. # ์ž‘์„ฑ - ์‰ฝ๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธ€ ์ž‘์„ฑ, ํŽธ์ง‘, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์–ด

apps.apple.com

 

 

1-1. <์ง๊ด€๋กœ๊ทธ> ๊ฐœ๋ฐœ ๊ณ„๊ธฐ


- ์Šคํฌ์ธ ๋งค๋‹ˆ์ง€๋จผํŠธ๋ฅผ ์ „๊ณตํ•  ๋งŒํผ ์ถ•๊ตฌ์™€ ์•ผ๊ตฌ์— ์—ด๊ด‘ํ•ด์˜จ ์นœ์˜ค๋น , ์ง€์—ญ ์Šคํฌ์ธ ํŒ€๊ณผ ์ƒํ™œ ์Šคํฌ์ธ ์— ์ง„์‹ฌ์ธ ๋ฏธ๊ตญ์ธ ์นœ๊ตฌ๋“ค, 2021๋…„ ๋„์ฟ„ ์˜ฌ๋ฆผํ”ฝ ์ดํ›„ ์—ฌ์ž๋ฐฐ๊ตฌ์˜ ํŒฌ์ด ๋œ ์ ˆ์นœํ•œ ์นœ๊ตฌ์˜ ์˜ํ–ฅ์œผ๋กœ ๊ทธ๋“ค์„ ๋”ฐ๋ผ ์ง๊ด€์„ ๋‹ค๋‹ˆ๋ฉฐ ๊ทธ๋“ค๊ณผ ๊ฐ™์€ ํŒ€์„ ์‘์›ํ•˜๊ณ  ์ข‹์•„ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ์Šคํฌ์ธ  ์ง๊ด€์˜ ๋งค๋ ฅ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ง๊ด€์„ ํ•ด์„œ ์‘์›ํ•˜๋Š” ํŒ€์ด ์Šน๋ฆฌ ํ–ˆ์„ ๋•Œ, ํ•œ๊ตญ์—์„  ๊ทธ ํŒ€์˜ ์Šน๋ฆฌ๋ฅผ ์ง€์ผœ๋ณธ ํŒฌ๋“ค์„ '์Šน๋ฆฌ์š”์ •'์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒŒ ๊ท€์—ฝ๊ณ  ์žฌ๋ฐŒ๋‹ค๊ณ  ๋А๊ผˆ์—ˆ์–ด์š”.
 
- ๋‚ด๊ฐ€ ๊ทธ ์Šน๋ฆฌ์š”์ •์ผ ๋• ๊ดœํžˆ ํŒ€์— ๋ณดํƒฌ์ด ๋œ ๊ฒƒ ๊ฐ™๊ณ , ์Šน๋ฆฌ์š”์ •์ธ ๊ฒฝ์šฐ๊ฐ€ ๋Š˜์ˆ˜๋ก ์ง๊ด€๋„ ์žฌ๋ฐŒ์ง€๋งŒ '๋‚ด๊ฐ€ ๋ณธ ๊ฒฝ๊ธฐ๋Š” ์ด๊ธด๋‹ค'๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜๋ฉฐ ์ž๋ถ€์‹ฌ์„ ๊ฐ€์ง€๊ฒŒ ๋˜๋Š” ๊ฒŒ ์ง๊ด€์˜ ๋ฌ˜๋ฏธ๊ฐ€ ๋˜์–ด ๋” ์ž์ฃผ ์ง๊ด€์„ ๊ฐ€๊ฒŒ ๋˜๋ฉด์„œ ๋‚˜์˜ ์ง๊ด€ ์Šน๋ฅ ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ˆˆ์— ๋‚จ๊ธธ ์ˆ˜ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹จ ์ƒ๊ฐ์„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

- '๊ฐœ์ธ์˜ ์ง๊ด€ ์Šน๋ฅ ์„ ์žฌ๋ฐŒ๊ฒŒ ๋‚˜ํƒ€๋‚ด๊ณ , ๊ฒฝ๊ธฐ์˜ ์ถ”์–ต์„ ๊ธฐ๋กํ•  ์ˆ˜ ์—†์„๊นŒ?' ๋ž€ ๊ณ ๋ฏผ์„ ํ•˜๊ฒŒ ๋˜๋ฉด์„œ <์ง๊ด€๋กœ๊ทธ>๋ผ๋Š” ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜์—ˆ์–ด์š”.
 

1-2. <์ง๊ด€๋กœ๊ทธ> ์†Œ๊ฐœ & ํŠน์ง•


<์ง๊ด€๋กœ๊ทธ>๋Š” ๊ตญ๋‚ด 4๋Œ€ ์Šคํฌ์ธ  ๋ฆฌ๊ทธ + e์Šคํฌ์ธ ๋ฆฌ๊ทธ์— ํ•œํ•˜์—ฌ ์ง๊ด€ ๋‹ค๋‹ˆ๋Š” ํŒฌ๋“ค์„ ์œ„ํ•œ ์ง๊ด€ ๊ธฐ๋ก ์•ฑ์ž…๋‹ˆ๋‹ค.
 
๊ธฐ๋ก์„ ํ•˜๋ฉด ๋‹ฌ๋ ฅ์— ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๊ฐ€ ํ‘œ์‹œ๋จ๊ณผ ๋™์‹œ์— ํ‹ฐ์ผ“ ํ˜•์‹์œผ๋กœ ๊ธฐ๋ก์„ ์ €์žฅ ๋ฐ ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ €์žฅ๋œ ๊ธฐ๋ก์„ ๋ฐ”ํƒ•์œผ๋กœ ์Šน๋ฅ ์„ ์ฐจํŠธ ๋ฐ ํ…์ŠคํŠธ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”. ๊ธฐ๋ก์€ ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ €์žฅ๋œ ๊ธฐ๋ก์€ ์–ธ์ œ๋“  ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
 
์•ผ์™ธ ์Šคํฌ์ธ  ์ง๊ด€์„ ๋‹ค๋‹ˆ๋Š” ํŒฌ๋“ค์ด ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ฒฝ๊ธฐ์žฅ ๋‚ ์”จ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตญ๋‚ด ์ถ•๊ตฌ ๊ฒฝ๊ธฐ์žฅ๊ณผ ์•ผ๊ตฌ ๊ฒฝ๊ธฐ์žฅ ๋„์‹œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ ์”จ ์ •๋ณด๋„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 
 

1-3. ์‚ฌ์šฉ๋œ ๊ธฐ์ˆ  ์Šคํƒ


- Alamofire
- Codable

- CodeBase UI
- SnapKit 
- Realm
- FSCalendar
- TextfieldEffects
- IQKeyboardManager
- DGCharts
- Firebase
- Toast
- MVVM + CustomObservable
- PhotosUI
- MessageUI

 
 
 
 
 

2. ๊ธฐํš

 

2-1. ๊ธฐํš ๊ฐ€์ด๋“œ

 

 
 
 
 

2-2. ์ด๋ฒˆ ๊ฐœ์ธ์•ฑ ์ถœ์‹œ์—์„œ ๋„์ „ํ•˜๊ณ ์ž ํ–ˆ๋˜ ๊ฒƒ๋“ค


์ˆ˜์—…์—์„œ ๋ฐฐ์› ๋˜ ๊ฒƒ๋“ค์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.
 
- DiffableDatasource ๋กœ ์ปฌ๋ ‰์…˜๋ทฐ ํ‘œํ˜„ํ•˜๊ธฐ
- API ๋„คํŠธ์›Œํฌ ํ†ต์‹ ํ•˜๊ธฐ (Alamofire / Codable)
- CodeBase UI & SnapKit 
- Realm ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™œ์šฉํ•˜๊ธฐ
- MVVM
- ๋‹ค์–‘ํ•œ ๋ฌธ๋ฒ• ํ™œ์šฉํ•ด๋ณด๊ธฐ
- ํฐํŠธ ์ ์šฉ
- ๋‹ค๊ตญ์–ด ๋Œ€์‘
- ๋‹คํฌ๋ชจ๋“œ ๋Œ€์‘
- UIButton.configuration
- FileManager
 
 
์œ„ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์ €์˜ ๋ชฉํ‘œ์˜€๋Š”๋ฐ, MVVM์„ ์ œ์™ธํ•˜๊ณค ๋ชจ๋‘ ์ด๋ฒˆ 1.0.0 ๋ฒ„์ „์— ์ ‘๋ชฉ์‹œํ‚ค๊ณ  ๋„์ „ํ•ด๋ณด์•„์„œ ์‹ ๊ธฐํ•˜๊ธฐ๋„ ํ•˜๊ณ  ๋ฟŒ๋“ฏํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์˜ˆ์ •๋œ ๊ณต์ˆ˜์‹œ๊ฐ„์„ ๊ฐ€๋”์”ฉ ์˜ค๋ฒ„ํ•˜๊ธด ํ–ˆ์ง€๋งŒ, ์ œ๊ฐ€ ์ฝ”๋“œ ๋ฒ ์ด์Šค๋กœ UI๋ฅผ ์žก๋Š” ์‹œ๊ฐ„์ด ๋น„๊ต์  ๋น ๋ฅด๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋œ ๊ณ„๊ธฐ๊ฐ€ ๋˜์—ˆ์–ด์š”. ๋ธ”๋กœ๊ทธ์—๋„ ์ฝ”๋“œ๋กœ UI ์žก๋Š” ๊ฑธ ์žฌ๋ฐŒ๊ฒŒ ๋ฐฐ์šฐ๊ณ  ๊ณต๋ถ€ํ•œ ๊ธฐ๋ก์ด ์žˆ๋Š”๋ฐ, UI๋ฅผ ๊ณ ๋ฏผํ•˜๊ณ  UX๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒŒ ์–ด๋ ค์šฐ๋ฉด์„œ๋„ ๋ฐ”๋กœ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹จ ์ ์—์„œ ์ž‘์—… ํ•  ๋•Œ๋งˆ๋‹ค ์†๋„๊ฐ€ ์ž˜ ๋ถ™๊ณ  ์–ธ์ œ๋‚˜ ์žฌ๋ฐŒ๋Š” ๊ฒƒ ๊ฐ™์•„์š”.
 
๊ทธ๋ฆฌ๊ณ  ........ ์ œ๊ฐ€ ๊ฐœ๋ฐœ์ ์œผ๋กœ ๋ง‰ํž ๋•Œ๋งˆ๋‹ค ์‹ค๋ ฅ์„ ํ•‘๊ณ„๋กœ ์™ธ๋ฉดํ•˜๋˜ ๋ฌธ๋ฒ•๋“ค์„ ๋‹ค์‹œ๊ธˆ ์†Œ๊ฐœํ•ด์ฃผ๋ฉฐ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์œผ๋กœ ์ œ์‹œํ•ด์ฃผ์‹  ๋ฉ˜ํ† ๋‹˜๋“ค ๋•๋ถ„์— enum๊ณผ delegate, notificationCenter ๋“ฑ์˜ ๊ฐœ๋…์„ ๋‹ค์‹œ ๋ณต์Šตํ•˜๋ฉฐ ์ œ ์•ฑ์— ์ ์šฉ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ค‘ ๋‹ค๋ฅธ ๋ถ„๋“ค์€ ์‰ฝ๊ฒŒ ์“ฐ์‹œ๋Š” Enum ํ™œ์šฉ์ด ๋งค๋ฒˆ ์™€๋‹ฟ์ง€ ์•Š์•˜๋Š”๋ฐ, ๋ฉ˜ํ† ๋‹˜์ด ๋ฐฉํ–ฅ์„ฑ์„ ์žก์•„์ฃผ์‹  ์žฌ์‚ฌ์šฉ์˜ enum ์™ธ ๋™๊ธฐ๋ถ„๋“ค์ด ๋‹ค์–‘ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ ๊ทน์ ์œผ๋กœ ์•Œ๋ ค์ฃผ์‹  ๋•์— ์ด์ œ ์™œ enum์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š”์ง€ ์•Œ๊ฒ ๋”๋ผ๊ตฌ์š”. ์—ฌ๋Ÿฌ๋ชจ๋กœ ์ˆ˜์ •ํ•˜๊ธฐ๋„ ํŽธํ•˜๊ณ , ๊ฐ€๋…์„ฑ๋„ ์ข‹๊ณ . ๋งŒ๋Šฅ enum!
 
์—ฌ์ „ํžˆ ํ—ค๋งค๋Š” ๋ถ€๋ถ„๋„ ๋งŽ๊ณ  ์–ด๋ ค์›Œํ•˜๋Š” ๋ถ€๋ถ„๋„ ๋งŽ์ง€๋งŒ, ๊ฐœ์ธ์•ฑ ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•œ 3์ฃผ๋™์•ˆ ๊ฒฐ๊ณผ๋ฌผ์ด ๋‚˜์™”๋‹จ ์ ์—์„œ ์–ด๋–ป๊ฒŒ๋“  ๊ธฐํšํ•œ ๊ฑธ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฐœ๋ฐœ ๋‰ด๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํšŒ๊ณ ๋ฅผ ์“ฐ๋Š” ์ง€๊ธˆ๋„ ์‹ ๊ธฐํ•˜๋„ค์š”.
 
 

2-3. ์ดํ„ฐ๋ ˆ์ด์…˜ ๋ฐ ๊ณต์ˆ˜์‚ฐ์ •

 

https://zickwanlog.notion.site/zickwanlog/109914bfd568447db7b05f983e72ff0a 

 

์ง๊ด€๋กœ๊ทธ

์ง๊ด€๋กœ๊ทธ ์ดํ„ฐ๋ ˆ์ด์…˜ ๋ฐ ๊ณต์ˆ˜์‚ฐ์ •

zickwanlog.notion.site

 
์œ„ ๋…ธ์…˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

 
 

 

2-5. Realm DB ๊ตฌ์กฐ

 

_id objectId ** PrimaryKey
gameTitle String ํ•„์ˆ˜์ž…๋ ฅ
date String ํ•„์ˆ˜์ž…๋ ฅ
location String ํ•„์ˆ˜์ž…๋ ฅ
seat String ํ•„์ˆ˜์ž…๋ ฅ
comment String ํ•„์ˆ˜์ž…๋ ฅ
review String? User ์„ ํƒ์‚ฌํ•ญ
stampText String ํ•„์ˆ˜์ž…๋ ฅ

 
 
 
 
 

4. ๋ฐœ์ƒํ–ˆ๋˜ ์ด์Šˆ์™€ ๋Œ€์‘ ๋ฐฉ๋ฒ•

4-1. apply


https://calliek.tistory.com/16
 

 

[iOS/error] object has been deleted or invalidated.

โš™๏ธ ํ™˜๊ฒฝ - iOS 16์ด์ƒ - Swift 5.9 - Xcode 15 ๐Ÿ’ป ๋ฌธ์ œ์ƒํ™ฉ - ๊ฐœ์ธ์•ฑ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘ diffableDatasource๋กœ ์ปฌ๋ ‰์…˜๋ทฐ ํ™œ์šฉํ•˜๋Š” UI๋ฅผ ์‚ฌ์šฉ ์ค‘์ด์—ˆ๊ณ , Realm์—์„œ create๋Š” ์ž˜ ๋˜๋Š”๋ฐ delete๋ฅผ ํ•˜๋ ค๊ณ  ํ•˜๋ฉด delete ํŒ

calliek.tistory.com

 

4-2. ์‚ฌ์šฉ์ž์˜ Realm ์ ‘๊ทผ ๊ถŒํ•œ ๋ฌธ์ œ


- [์„ค์ •]-[์ผ๋ฐ˜]-[iPhone ์ €์žฅ๊ณต๊ฐ„]-[์•ฑ์ด๋ฆ„] ์ˆœ์œผ๋กœ ๋“ค์–ด๊ฐ”์„ ๋•Œ RealmํŒŒ์ผ์ด ๋ณด์—ฌ์„œ๋Š” ์•ˆ ๋˜๋Š”๋ฐ, ์ง๊ด€๋กœ๊ทธ์˜ Realm ํŒŒ์ผ์ด ๋…ธ์ถœ๋˜๊ณ  ์žˆ์—ˆ๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ Realm์— ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ•์ œ์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ์ ์œผ๋กœ ๋”ฐ๋กœ ์ž‘์„ฑํ•œ ๊ธฐ์–ต์ด ์—†์–ด์„œ ์šฐ์™•์ขŒ์™•ํ•˜๊ณ  ์žˆ์„ ๋•Œ ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ Info.plist์˜ ์„ค์ •์„ ์ˆ˜์ •ํ•ด๋ณผ ๊ฒƒ์„ ์•Œ๋ ค์ฃผ์…จ๊ณ .... 
 

์‚ฌ์ง„์ถœ์ฒ˜: ๊ฐ™์€ ์ด์Šˆ๋ฅผ ๊ฒช์€ YH๋‹˜์˜ ์บก์ฒ˜... ์‚ฌ์ง„ ํ—ˆ๋ฝ์€ ์•„์ง ์•ˆ ๋ฐ›์•˜๋Š”๋ฐ ........ ๋ด์ฃผ์„ธ์š”.

 
- Application supports iTunes file sharing, Supports opening documents in place ์„ค์ •์„ ์‚ญ์ œํ•ด์ฃผ์ž realm ์ ‘๊ทผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

- ๊ฐ™์€ ์ด์Šˆ๋ฅผ ๊ฒช์€ ๋™๊ธฐ๋‹˜๊ณผ ์ €์˜ ๊ณตํ†ต์ ์€ fileManager๋กœ ์ด๋ฏธ์ง€ ์ €์žฅ ๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•œ ์ฝ”๋“œ์™€ ์ˆ˜์—… ์ฝ”๋“œ๋ฅผ ํ˜ผ์˜ํ•ด์„œ ์‚ฌ์šฉ ํ•  ๋•Œ info.plist์—์„œ ์ € ๋‘ ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์—ˆ๋˜ ์ ์ด์—ˆ๊ณ , ์ € ๋‘ ์„ค์ •์œผ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๊ฐ€ realm์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ๋˜ ๊ฑฐ์˜€์–ด์š”. ํŒŒ์ผ ์ ‘๊ทผ์˜ ๋ฒ”์œ„๋ฅผ ๋„“ํ˜€์ฃผ๋Š” ์„ค์ •์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์— realm์—๋„ ์˜ํ–ฅ์„ ์ฃผ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์š”.
  
 

 

5. ๊ฐœ์ธ ํšŒ๊ณ 

 
๊ธฐํš, ๋””์ž์ธ, ๊ฐœ๋ฐœ ์ด ์„ธ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ํ˜ผ์ž ํ•ด๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์ง„ ์•Š์•˜๋Š”๋ฐ ํ•ด์•ผํ•  ์ƒํ™ฉ์ด ์˜ค๋‹ˆ๊นŒ ํ•ด๋‚ธ ๊ฒŒ ์ถœ์‹œ๋ฅผ ํ•œ ์‹œ์ ์— ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ ์ •๋ง ์‹ ๊ธฐํ•ด์š”. ํŠนํžˆ ๊ธฐํš๊ณผ ๋””์ž์ธ๊นŒ์ง€ ์ œ๊ฐ€ ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ํ‰์†Œ ํฅ๋ฏธ ์žˆ์–ดํ•˜๋˜ UXUI ์ธก๋ฉด์„ ๊ฐœ๋ฐœ์ž์™€ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ ์ง„์ง€ํ•˜๊ฒŒ ๊ณ ๋ฏผ์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜์Šต๋‹ˆ๋‹ค. ๊ธฐํš์— ๋งž์ถ˜ UX๋ฅผ ๊ณ ๋ฏผํ•ด๋ณด๊ณ , UX์— ์–ด์šธ๋ฆฌ๋Š” UI๋ฅผ ๋””์ž์ธ ํ•ด๋‚ด๊ณ , ์ฝ”๋“œ๋กœ ์ตœ์ข… ๊ตฌํ˜„์„ ํ•˜๋Š” ์ด ์ผ๋ จ์˜ ๊ณผ์ •์„ ๋ถ€์กฑํ•˜์ง€๋งŒ ๊ฑฐ์น˜๋ฉด์„œ ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ์ž์— ๊ฐ€๊นŒ์›Œ ์งˆ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ธฐํšŒ์ด์ž ๋ฐฐ์›€์ด์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
 
๋ฌด์–ธ๊ฐ€๋ฅผ ๊ธฐ๋กํ•˜๋Š” ์•ฑ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ๋กœ ํ–ˆ๋˜ ์ด์œ  ์ค‘ realm ๊ณต๋ถ€๋ฅผ ์ œ๋Œ€๋กœ ํ•ด๋ณด๊ณ  ์‹ถ์–ด์„œ ์„ ์ •ํ–ˆ๋˜ ๊ฒƒ๋„ ์žˆ๋Š”๋ฐ, ๋ถ€์กฑํ–ˆ๋˜ ๋งŒํผ realm์„ ๋‹ค๋ฃจ๋ฉฐ ์˜๋„์น˜ ์•Š๊ฒŒ ๋งŽ์ด ํ—ค๋งธ์ง€๋งŒ ํ—ค๋งจ ๋งŒํผ ์ด๋ฒˆ ๊ธฐํšŒ์— realm์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์•˜๋‚˜ ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  CRUD์—์„œ ์•„์ง ์•ˆ ์จ๋ณธ ๊ธฐ๋Šฅ์ด ๋งŽ์•„์„œ ์™„์ „ํžˆ ๋‹ค ์ดํ•ดํ–ˆ๋‹ค๊ณ  ํ•  ์ˆœ ์—†๊ฒ ์ง€๋งŒ, ๊ทธ๋ž˜๋„ ์ด์ œ ํ•„์š”ํ•œ ๋ถ€๋ถ„์€ ์ฐพ์•„์„œ ์–ด์ฐŒ์ €์ฐŒ ๊ตฌํ˜„ํ•ด๋‚ผ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ์ž์‹ ๊ฐ๋„ ์ข€ ์ƒ๊ฒผ๊ณ ์š”.

๊ทธ๋ฆฌ๊ณ  [๊ธฐ๋ก]์ด๋ผ๋Š” ์ฃผ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณต๋ถ€ํ•ด์„œ ๊ทธ ๊ธฐ๋ก์„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด ํ‘œํ˜„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๊ณ , ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ๊ฐ™์ด ์ˆ˜์—…์—์„œ ๋ฐฐ์šด ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐœ์ธ์•ฑ์— ์ ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์„œ ์ €๊ฐ™์€ ๊ฐœ๋ฐœ ๋‰ด๋น„์—๊ฒŒ ์•„์ฃผ ์ ์ ˆํ•œ ์ฃผ์ œ ์„ ์ •์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋งŒํผ ๊ธฐ๋ก์— ์ ‘๊ทผํ•ด๋‚˜๊ฐ€๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์—…๋ฐ์ดํŠธ ํ•ด๋‚˜๊ฐ€์•ผํ•  ๋ถ€๋ถ„๋„ ๋งŽ์ง€๋งŒ์š”. ๊ณ„์† '์•„ ๋” ์ž˜ํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ!' ํ•˜๊ฒŒ ๋˜๋Š” ๋ถ€๋ถ„์€ ์•„๋ฌด๋ž˜๋„ searchVC๊ฐ€ ๋  ๊ฒƒ ๊ฐ™์€๋ฐ, ๋” ๋‚˜์€ UI๊ฐ€ ๋ถ„๋ช… ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ด UI๋„ ์—…๋ฐ์ดํŠธ๋กœ ์ฐจ์ฐจ ๊ฐœ์„ ํ•ด๋‚˜๊ฐ€๊ฒ ์Šต๋‹ˆ๋‹ค.
 
์•„์ง ๋ถ€์กฑํ•œ ์‹ค๋ ฅ์œผ๋กœ ์ธํ•ด ๊ฐœ์ธ์ ์œผ๋กœ ์•„์‰ฌ์šด ๋ถ€๋ถ„์ด ๋งŽ์ง€๋งŒ, ๊ทธ์ค‘ ์ œ ์‹ค๋ ฅ ์™ธ ์ ์œผ๋กœ ์•„์‰ฌ์› ๋˜ ์ ์€ ๊ตญ๋‚ด ์Šคํฌ์ธ  ๊ด€๋ จ API์˜ ๋ถ€์žฌ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธฐํš๋‹จ๊ณ„์—์„œ ์—ด์‹ฌํžˆ ์ฐพ์•„๋ดค์—ˆ๋Š”๋ฐ ๊ตญ๋‚ด ์Šคํฌ์ธ  ๋ฆฌ๊ทธ๋Š” ๋ฆฌ๊ทธ ๊ด€๋ จ API๋ฅผ ์˜คํ”ˆ์†Œ์Šค๋กœ ์ œ๊ณตํ•ด์ฃผ๊ณ  ์žˆ์ง€ ์•Š์•„์„œ, ์Šคํฌ์ธ ๋ณด๋‹ค ๊ธฐ๋ก์— ๋” ์ดˆ์ ์„ ๋งž์ถœ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹จ ์ ์—์„œ ์Šคํฌ์ธ  ๊ด€๋ จ ์•ฑ์˜ ์™„์„ฑ๋„ ๋ฉด์—์„œ ์กฐ๊ธˆ ์•„์‰ฝ์ง€ ์•Š์•˜๋‚˜ ํšŒ๊ณ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
 
์ฝ”๋“œ์ ์œผ๋กœ๋Š” ์•„์ง ์‹ ๋‚˜๊ฒŒ ์ž๋ž‘ํ•  ๋ถ€๋ถ„์€ ์—†๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ทธ๋ž˜๋„ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ์ „์—” ์ž˜ ์•ˆ ์ผ๋˜ ์—ฌ๋Ÿฌ swift ๋ฌธ๋ฒ•๋“ค์„ ํ™œ์šฉํ–ˆ๋‹ค๋Š” ์ ์ด ๋ฟŒ๋“ฏํ•œ ๊ฒƒ ๊ฐ™์•„์š”. ํ•˜๋“œ ์ฝ”๋”ฉ์€ ์—ฌ์ „ํžˆ ์ข…์ข… ํ”ผํ•  ์ˆ˜ ์—†์ง€๋งŒ, ๋ฉ€๋ฏธ๊ฐ€ ๋‚  ๋งŒํผ ๊ธธ๊ณ  ๋ˆˆ ์•„ํ”ˆ ์ฝ”๋“œ๋Š” ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„  ์—†์ง€ ์•Š์•˜๋‚˜ ์‹ถ์–ด์„œ ๊ผญ ์ฝ”๋“œ์— ๋Œ€ํ•ด ์ž๋ž‘ํ•ด์•ผํ•œ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์„ ์ž๋ž‘ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด์ œ MVVM์œผ๋กœ ๊ฐœ์„ ํ•ด๋‚˜๊ฐˆ ๊ฑฐ์ง€๋งŒ!
 
๋ถ„๋ช… ๊ฐœ๋ฐœ์— ์ง‘์ค‘ํ•œ 3์ฃผ๊ฐ„ ํž˜๋“ค์—ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, ์ด์ œ ์‹œ์ž‘์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๋๋‚˜๊ณ  ๋‚˜๋‹ˆ๊นŒ ์ง€๋‚œ 3์ฃผ๊ฐ€ ์ œ๋ฒ• ์žฌ๋ฐŒ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์š”.
 
์ด์ƒ, ๊ฒฐ๊ตญ ์žฌ๋ฏธ๋งŒ ๋‚จ์€ ์ €์˜ ์ฒซ ์•ฑ ๊ฐœ๋ฐœ์ด์—ˆ๋˜ <์ง๊ด€๋กœ๊ทธ> ์— ๋Œ€ํ•œ ํšŒ๊ณ ์˜€์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋ถ€์ง€๋Ÿฐํžˆ ์—…๋ฐ์ดํŠธ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!
 
 
 
 


 

 

 

 

(+)

 

์ง๊ด€๋กœ๊ทธ๊ฐ€ ๋Œ€ํ•œ๋ฏผ๊ตญ ์Šคํฌ์ธ  ๋ถ„์•ผ์—์„œ 1์œ„๋ฅผ ํ–ˆ๋˜ ์ˆœ๊ฐ„.

 




 
 

 

 


 
 
 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐ŸŒฑ SeSAC iOS 3๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๐ŸŒฑ ์ƒˆ์‹น ์˜๋“ฑํฌ iOS ์•ฑ๊ฐœ๋ฐœ์ž ๋ฐ๋ท”๊ณผ์ • 3๊ธฐ ํ›„๊ธฐ  (5) 2024.06.25
๐ŸŒฑ 7์ฃผ์ฐจ: URLSession, Access Control, ARC  (4) 2023.09.04
๐ŸŒฑ 6์ฃผ์ฐจ: NotificationCenter, CLLocationManager, MKMapView, UIPageViewController  (1) 2023.08.27
๐ŸŒฑ 5์ฃผ์ฐจ: API ํ†ต์‹ , Codable, DispatchGroup, ๋ณต์Šต  (1) 2023.08.20
๐ŸŒฑ 4์ฃผ์ฐจ: ๋„คํŠธ์›Œํฌ ํ†ต์‹   (0) 2023.08.13
  1. 0.
  2.  
  3. 1. ์•ฑ ์†Œ๊ฐœ ๐Ÿ€โšพ๏ธ๐Ÿโšฝ๏ธ 
  4. 2. ๊ธฐํš
  5. 4. ๋ฐœ์ƒํ–ˆ๋˜ ์ด์Šˆ์™€ ๋Œ€์‘ ๋ฐฉ๋ฒ•
  6. 5. ๊ฐœ์ธ ํšŒ๊ณ 
'๐ŸŒฑ SeSAC iOS 3๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๐ŸŒฑ ์ƒˆ์‹น ์˜๋“ฑํฌ iOS ์•ฑ๊ฐœ๋ฐœ์ž ๋ฐ๋ท”๊ณผ์ • 3๊ธฐ ํ›„๊ธฐ
  • ๐ŸŒฑ 7์ฃผ์ฐจ: URLSession, Access Control, ARC
  • ๐ŸŒฑ 6์ฃผ์ฐจ: NotificationCenter, CLLocationManager, MKMapView, UIPageViewController
  • ๐ŸŒฑ 5์ฃผ์ฐจ: API ํ†ต์‹ , Codable, DispatchGroup, ๋ณต์Šต
Callie_
Callie_
  • Callie_
    CalliOS
    Callie_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • ๐ŸŽ APPLE
      • ๐ŸŽ Dev
        • Swift
        • UIKit
        • SwiftUI
        • Issue
        • ๊ตฌํ˜„
      • ๐ŸŽ Design
        • HIG
      • โš™๏ธ CS
      • ๐Ÿ’ก ์•Œ๊ณ ๋ฆฌ์ฆ˜
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
        • ๋ฐฑ์ค€
      • ๐ŸŸ๏ธ ์ง๊ด€๋กœ๊ทธ (์ถœ์‹œ์•ฑ)
        • ์—…๋ฐ์ดํŠธ
      • ๐ŸŒฑ SeSAC iOS 3๊ธฐ
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋„คํŠธ์›Œํฌํ†ต์‹ 
    ์ƒ๋ช…์ฃผ๊ธฐ
    ios
    ํ™”๋ฉด์ „ํ™˜
    Infoํƒญ
    Snapshot
    DiffableDataSource
    apply
    IBOutlet
    IBAction
    Enum
    DidEndOnExit
    layer.shadow
    assets
    CocoaTouchFramework
    .OverFullScreen
    TableViewCell
    addTarget
    TapGestureRecognizer
    SwiftUI
    stroyboard
    diffable
    .fullScreen
    modalPresentStyle
    Swift
    clipsToBound
    SeSAC
    Entry Point
    cornerradius
    CustomView
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Callie_
[SeSAC] iOS ๊ฐœ์ธ์•ฑ <์ง๊ด€๋กœ๊ทธ> ์ถœ์‹œ ํšŒ๊ณ 
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.