Swift 24

[Swift] CoreData ํ™œ์šฉํ•ด๋ณด๊ธฐ (Subclass ์ƒ์„ฑ๋ฒ•, Double ํƒ€์ž… ์„ ์–ธ ์•ˆ๋˜๋Š” ์ด์œ )

CoreData๋ฅผ ํ™œ์šฉํ•ด์„œ ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ์—ฐ์Šตํ•ด๋ณผ๊นŒํ•ฉ๋‹ˆ๋‹ค! ์ด๋ฆ„, ์„ฑ๋ณ„, ๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•œ ํ›„์ €์žฅ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด, CoreData์— ์ €์žฅ๋˜๊ณ ์ „์ฒด์‚ญ์ œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.โ‘  ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์šฐ์„  ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ํ•˜๋‹จ์— CoreData๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋Ÿฌ๋ฉด ์œ„์™€ ๊ฐ™์ด xcdatamodeld ํŒŒ์ผ์ด ์ž๋™ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.๋งŒ์•ฝ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์— CoreData๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค๋ฉด?๋”๋ณด๊ธฐCommand + N ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.โ‘ก Entity, Attributes, Relationships ์„ค์ •์ด์ œ ํ•˜๋‹จ Add Entity๋ฅผ ํด๋ฆญํ•ด์„œ Entity๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.์—ฌ๊ธฐ์„œ Entity์ด๋ฆ„์€ ์ค‘์š”ํ•˜๋‹ˆ๊นŒ ์ž˜ ๊ธฐ์–ตํ•˜๊ธฐ!(์ €๋Š” Testํ”„๋กœ์ ํŠธ๋ผ ์ œ ์ด๋ฆ„ Yegr๋ผ๊ณ  ์ง€์—ˆ..

Swift/Xcode 2024.12.12

[Swift] CoreData - ๊ณต์‹๋ฌธ์„œ ํŒŒํ—ค์น˜๊ธฐ

์˜ค๋Š˜ ์ •๋ฆฌํ•  ์ฃผ์ œ๋Š” Swift CoreData!!๊ทธ๋™์•ˆ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ UserDefaults์™€ Realm์„ ์‚ฌ์šฉํ•ด์™”๋Š”๋ฐ,์•Œ๋˜ ์ง€์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ CoreData๋ฅผ ์จ๋ณผ ๊ธฐํšŒ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค..๋ฐ”์œ ๊ณผ์ •๋„ ๋๋‚ฌ๊ณ ! ์ด์ œ๋Š” ๋ถ€์กฑํ•œ ๊ฐœ๋ฐœ ์ง€์‹์„ ์ฑ„์šธ ์‹œ๊ฐ„์ธ ๊ฒƒ ๊ฐ™์•„์„œ๊ณต๋ถ€ํ•  ๊ฒธ ๋ธ”๋กœ๊ทธ์— ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค๐Ÿ˜€์ฒ˜์Œ ๊ณต๋ถ€ํ•˜๋Š” ๋‚ด์šฉ์ด๋ผ ๊ณต์‹๋ฌธ์„œ ๋จผ์ € ์‚ดํŽด๋ณผ๊ฒŒ์š”. Core Data | Apple Developer DocumentationPersist or cache data on a single device, or sync data to multiple devices with CloudKit.developer.apple.com๋ถ€์กฑํ•œ ์˜์–ด์‹ค๋ ฅ์ด์ง€๋งŒ, ์ฐจ๊ทผ์ฐจ๊ทผ ํ•ด์„ํ•ด๋ณผ๊ฒŒ์š”. ํ‘ธํ•˜ํ•˜..(๋ฒˆ์—ญ์ด..

Swift 2024.12.01

[SwiftUI] EnvironmentObject

๊ณต์‹๋ฌธ์„œEnvironmentObjectA Property wrapper type of an observable object that a parent or ancestor view supplies.→ ๋ถ€๋ชจ ํ˜น์€ ์กฐ์ƒ ๋ทฐ๊ฐ€ ์ œ๊ณตํ•˜๋Š” observable object์˜ propery wrapper ํƒ€์ž…OverViewAn environment object invalidates the current view whenever the observable object that conforms to Observable Object changes.→ environment object๋Š” observable object์˜ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ํ˜„์žฌ ๋ทฐ๋ฅผ ๋ฌดํšจํ™”ํ•ฉ๋‹ˆ๋‹ค. (์ด ๋ง์€ ํ˜„์žฌ ๋ทฐ์— ๋ณ€ํ™”๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์ค€๋‹ค๋Š” ์˜๋ฏธ ๊ฐ™์•„์š”.)If ..

Swift/SwiftUI 2024.10.02

[Swift] ํ”„๋กœํผํ‹ฐ(Property) โ‘ก - ํƒ€์ž…

ํ”„๋กœํผํ‹ฐ ๊ฐ์‹œ์ž (Property Observers)- ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ๋ณ€๊ฒฝ๋จ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์ž‘์—…์„ ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค. - ๋˜ํ•œ, ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ์ƒˆ๋กœ ํ• ๋‹น๋  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœ๋œ๋‹ค.- ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’์ด ํ˜„์žฌ์˜ ๊ฐ’๊ณผ ๊ฐ™๋”๋ผ๋„ ํ˜ธ์ถœ๋œ๋‹ค.- ์ €์žฅ ํ”„๋กœํผํ‹ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ”„๋กœํผํ‹ฐ๋ฅผ ์žฌ์ •์˜ํ•ด ์ƒ์†๋ฐ›์€ ์ €์žฅ ํ”„๋กœํผํ‹ฐ ๋˜๋Š” ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์—๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.- ์ƒ์†๋ฐ›์ง€ ์•Š์€ ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ์—๋Š” ํ”„๋กœํผํ‹ฐ ๊ฐ์‹œ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. (์ €์žฅ๋˜์–ด์•ผ ํ•  ๊ฐ’์ด ์žˆ์„ ๋•Œ๋งŒ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—)• willSetํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ• didSetํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ ์งํ›„์— ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์„œ๋“œ• willSet & didSet์˜ ๋งค๊ฐœ๋ณ€์ˆ˜willSet ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋˜๋Š” ์ „๋‹ฌ์ธ์ž → ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฐ’didSet ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌ๋˜๋Š” ์ „๋‹ฌ์ธ์ž..

Swift 2024.06.04

[Swift] AutomaticDimension

์ข‹์€ ์ฝ”๋“œ ๊ตฌ์„ฑ์€ ์•„๋‹ ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ AutomaticDimension์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ ์–ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!๊ธฐ๋ณธ ์…‹ํŒ… ์ฝ”๋“œ๋Š” ์•„๋ž˜ ์ ‘์€ ๊ธ€๋กœ ์ ์–ด๋‘๊ฒ ์Šต๋‹ˆ๋‹ค :)๋”๋ณด๊ธฐimport UIKitimport SnapKitclass ViewController: UIViewController { let tableView = UITableView() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white configureTableView() } func configureTableView() { view.addSu..

Swift 2024.06.03

[Swift] CLLocationManager

๊ถŒํ•œ ์„ค์ •ํ•˜๊ธฐ (info.plist)- ํ•„์š”ํ•œ ๊ถŒํ•œ๋งŒ ์„ค์ •ํ•˜๊ธฐ- ๊ถŒํ•œ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ Description ๊ตฌ์ฒด์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐโœ”๏ธ Privacy - Location When In User Usage Descriptionforeground์—์„œ ์‹คํ–‰ ์ค‘์ผ ๋•Œ๋งŒ ์•ฑ์ด ์œ„์น˜ ์ •๋ณด์— ์—‘์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ ( iOS 11+ )โœ”๏ธ Privacy - Location Always and When In Use Usage Descriptionbackground์—์„œ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์•ฑ์ด ์œ„์น˜ ์ •๋ณด์— ์—‘์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ ( iOS 11+ )โœ”๏ธ Privacy - Location Always Usage Descriptionbackground์—์„œ ์•ฑ์ด ์œ„์น˜ ์ •๋ณด์— ์—‘์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ ( iOS 11- )โœ”๏ธ Privacy - Location D..

Swift/Xcode 2024.05.31

[Swift] UIButton Configuration

UIButton ConfigurationiOS 15๋กœ ์—…๋ฐ์ดํŠธ ์ดํ›„๋กœ UIButton์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค์–‘ํ•ด์กŒ๋‹ค.์—…๋ฐ์ดํŠธ ๋œ ์Šคํƒ€์ผ์„ ์ฑ„ํƒํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด์šธ๋ฆฌ๋Š” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.๊ธฐ์กด์— UIButton์€ .setTitle / .setImage ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฒ„ํŠผ์˜ ๋ชจ์–‘์„ ๋””์ž์ธํ–ˆ์ง€๋งŒ,iOS 15์—์„œ ์ถ”๊ฐ€๋œ UIButton.Configuration์€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์กฐ๊ธˆ ๋” ์‰ฝ๊ณ , ๋‹ค์–‘ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.configuration์€ ํฌ๊ฒŒ 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๋ฒ„ํŠผ์„ ์ƒ์„ฑํ•  ๋•Œ, ๋ณด๊ณ  ๊ทธ๋ƒฅ ์ง€๋‚˜์ณค๋˜ ๋‹ค๋ฅธ ๋ฒ„ํŠผ๋“ค์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.1. plain (๋ฐฐ๊ฒฝ์ด ํˆฌ๋ช…ํ•œ ๋ฒ„ํŠผ)static func plain() -> UIButton.Configuration→ Creates ..

Swift/Xcode 2024.05.30

[Swift] View Drawing Cycle

View Drawing CycleVeiw Drawing Cycle์ด ๋ฌด์—‡์ผ๊นŒ?view๊ฐ€ ๋กœ๋“œ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ, ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๋Š” Cycle์„ ๋งํ•œ๋‹ค.view๊ฐ€ ๋กœ๋“œ ์‹œ, ์‹œ์Šคํ…œ์ด UIView์—๊ฒŒ draw ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋“œ๋กœ์ž‰์„ ์š”์ฒญํ•œ๋‹ค.๊ทธ๋ฆฌ๊ณ  ์Šค๋ƒ…์ƒท์„ ์บก์ณํ•˜์—ฌ UIView์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.๊ทธ ๋‹ค์Œ ๋ทฐ์˜ ์ปจํ…์ธ  ๋ณ€๊ฒฝ ์‹œ ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋“ค์„ ํ˜ธ์ถœํ•˜์—ฌ ์‹œ์Šคํ…œ์—๊ฒŒ ์š”์ฒญํ•œ๋‹ค.iOS์˜ ์ด๋ฒคํŠธ๋Š” ๊ฐ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ์กด์žฌํ•˜๋Š” Run loop๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค.๊ทธ ์ค‘ Main Run loop๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.์ด Main Run loop์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ 'Update Cycle'์ด๋ผ๋Š” ๊ฒƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.์—ฌ๊ธฐ์„œ Layout(size, position), Display(color, text, image),..

Swift/Xcode 2024.05.28