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

๐ŸŽ iOS122

[RealmSwift] Migration Primary Key Realm์„ ์‚ฌ์šฉํ•ด์„œ ์•ฑ์„ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ค‘์— ์ƒˆ๋กœ์šด ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ์ถ”๊ฐ€, ์‚ญ์ œ, ์—…๋ฐ์ดํŠธ ํ•˜๊ฑฐ๋‚˜ ํ”„๋ผ์ด๋จธ๋ฆฌํ‚ค๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ์ˆœ๊ฐ„์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ ์•ฑ์„ ์ด๋ฏธ ๋ฐฐํฌํ•œ ์ƒํƒœ์—์„œ ๊ผญ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜์•ผ ํ•œ๋‹ค๋ฉด ์•„๋ž˜ ๊ธ€์„ ์ฐธ๊ณ ํ•ด์„œ Configuration ์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. [RealmSwift] Migration, ์šด์˜ ์ค‘์ธ ์•ฑ์˜ ํ•„๋“œ ์ถ”๊ฐ€ํ•œ ํ›„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•ด์ฃผ๊ธฐ class Customer: Object { @objc dynamic var idx = 0 @objc private dynamic var privateType: Int = CustomerType.active.rawValue let products = List() } ์ด๋ฏธ ์šด์˜ ์ค‘์ธ ์•ฑ์—(ํ˜น์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ .. 2023. 5. 22.
[Xcode/iOS] Simulator์—์„œ UIViewController ๊ฝ‰ ์ฐจ๊ฒŒ ์•ˆ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ.. ๊นŒ์ง€๋Š” ์•„๋‹ˆ์ง€๋งŒ UIViewController๊ฐ€ ํ™”๋ฉด์— ๊ฝ‰ ์•ˆ์ฐจ์„œ ๋‚˜์˜จ๋‹ค๋ฉด Targets > Info plist ๋กœ ๊ฐ€์„œ Key์™€ Value ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. Launch screen interface file base name ์ถ”๊ฐ€ํ•˜์‹œ๊ณ  LaunchScreen ์œผ๋กœ ์ง€์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค! 2023. 5. 12.
[iOS/Swift] Configuration ๋ณ„๋กœ Firebase plist ํŒŒ์ผ ์„ค์ • ๋นŒ๋“œ์‹œ Build Phases๋ฅผ ๋ฐ˜์˜ํ•จ. ์—ฌ๊ธฐ์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋นŒ๋“œ์‹œ ์„ค์ •๋˜์–ด์•ผ ํ•  ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ Firebase์˜ ํ‘ธ์‹œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด Info.plist ํŒŒ์ผ์„ ํ•„์š”๋กœ ํ•˜๊ฒŒ ๋จ. ์ด ํŒŒ์ผ์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ ํŒŒ์ผ ์ด๋ฆ„์„ ๊ฐ๊ฐ ๋ณ€๊ฒฝํ•˜๊ณ  AppDelegate์—์„œ Bundle๋กœ ๋ถ€ํ„ฐ ํŒŒ์ผ์„ ์ฐพ์•„ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Firebase Crashlytics๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋ฉด info.plist ์ด๋ฆ„์ด ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•จ Firebase info Script๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ณ  ์—†๋‹ค๋ฉด Target ์„ ํƒ > Build Phases ํƒญ ์„ ํƒ > New Run Script Phase ์„ ํƒ # Type a script or drag a script file from your workspac.. 2023. 4. 26.
[Xcode/Swift] Multiple Target 1. duplicate Target ํ˜น์€ ํ•˜๋‹จ์— ์žˆ๋Š” + ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์ถ”๊ฐ€ํ•ด ์ค˜๋„ ๋จ. ์‚ฌ์šฉ์ž ์ •์˜ property list๊ฐ€ ๋‹ด๊ธด info.plist ํŒŒ์ผ๋„ ํ•จ๊ป˜ ๋ณต์‚ฌ๋จ 2. ๋”๋ธ” ํด๋ฆญํ•˜์—ฌ Target ์ด๋ฆ„ ๋ณ€๊ฒฝ, ์Šคํ‚ด ์ด๋ฆ„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๋‹จ ๋นŒ๋“œ ์ƒํƒœ๋ฐ”์—์„œ Manage Schemes ์„ ํƒ 3. ์Šคํ‚ด ์„ ํƒ ํ›„ ํƒญ ๋ˆ„๋ฅด๋ฉด ์ด๋ฆ„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ 4. ๊ฐ Configuration์—์„œ ์‚ฌ์šฉํ•  Custom Flag์„ค์ • ๊ฐ€๋Šฅ Swift Compiler์—์„œ Custom Flags ์„ค์ • ๊ฐ€๋Šฅํ•จ 2023. 4. 26.
[Xcode/Swift] User-Defined Build Settings Build Settings์—์„œ Configuration ๋ณ„๋กœ ๊ฐ’์„ ์ง€์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ Configuration์ด ๊ฐ๊ฐ ๋‹ค๋ฅธ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ex) host url 1. Build Settings ์—์„œ Add User-Defined Setting ์„ ๋ˆŒ๋Ÿฌ ์‚ฌ์šฉ์ž ์ •์˜ ์„ธํŒ…์„ ์ถ”๊ฐ€ 2. ์‚ฌ์šฉํ•  ํƒ€์ดํ‹€์„ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด Configuration ๋ณ„๋กœ ๊ฐ’์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ 3. Info.plist์—์„œ BASE_URL๋กœ ์ ‘๊ทผ์‹œ Build settings ์—์„œ ์ •์˜ํ•ด ์ค€ BASE_URL ๊ฐ’์„ ์“ธ ์ˆ˜ ์žˆ๋„๋ก $(BASE_URL) ๋กœ ์„ค์ • ํ•ด ์คŒ Info.plist๋ž€ key/value ์Œ์œผ๋กœ ๋นŒ๋“œ ํƒ€์ž„ ๋™์•ˆ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๊ฐ’. xCode๋Š” ๋นŒ๋“œ ๋˜๋Š” ๋™์•ˆ Build setting์„ ์‚ดํŽด๋ณด๊ฒŒ ๋˜๋Š”๋ฐ .. 2023. 4. 26.
[Xcode/Swift] Configuration ๊ด€๋ฆฌํ•˜๊ธฐ Intro Dev -> QA -> Release์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ ๊ฐ ๋‹จ๊ณ„์—์„œ ์š”๊ตฌํ•˜๋Š” ๋นŒ๋“œ ์„ธํŒ…์ด๋‚˜ ์ƒ์ˆ˜์˜ ์ •์˜๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ ex) URL host for Networking, Firebase info.plist etc.. Configuration์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ Configuration์— ํ•„์š”ํ•œ ๋นŒ๋“œ ์„ธํŒ…์„ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ Multiple targets์„ ํ†ตํ•ด์„œ๋„ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋ถ„๊ธฐ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ Target์€ MacOS, iOS ๋“ฑ์˜ ๊ธฐ๊ธฑ ํƒ€๊ฒŸ, ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๋ฉด์„œ ์ผ๋ถ€ ๋กœ์ง์ด ๋‹ฌ๋ผ ๋‹ค๋ฅธ ์•ฑ์œผ๋กœ ๋ฐฐํฌ๋˜๋Š” ์•ฑ ๋“ฑ์—์„œ ์‚ฌ์šฉ Configuation์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์ผ์ข…์˜ ์ž‘์—… ํ™˜๊ฒฝ์„ ๋ณ€๊ฒฝํ•ด ์ฃผ๋Š” ๊ฒƒ ํ•˜๋‚˜์˜ ์•ฑ์—์„œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ ์œ ์šฉ ๋ฐฐํฌ์‹œ์—๋„ Configu.. 2023. 4. 26.
[iOS/Swift] ์•ฑ ๋ฑƒ์ง€ ๊ฐฏ์ˆ˜ ๋ณ€๊ฒฝ UIApplication.shared.applicationIconBadgeNumber = 90 ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ๋Š” ํ‘œ์‹œ ๋˜์ง€ ์•Š์Œ ํŠน์ • ๋™์ž‘์‹œ ๋ฑƒ์ง€์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์œ„ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ง์ ‘ ๋ณ€๊ฒฝํ•ด ์ค˜์•ผ ํ•จ ๋ฑƒ์ง€๋ฅผ ์ œ๊ฑฐ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ 0์„ ์ž…๋ ฅํ•˜๋ฉด ๋ฑƒ์ง€๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š์Œ 2023. 4. 26.
[iOS/Swift] Alamofire ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ UnitTest URLSession์˜ dataTask๋ฅผ ํ”„๋กœํ† ์ฝœ๋กœ ๋งŒ๋“  URLSessionProtocol์„ URLSession๊ณผ NetworkManager์˜ session์˜ ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•ด์„œ, ์‹ค ์‚ฌ์šฉ ์•ฑ์—์„œ๋Š” ๊ธฐ๋ณธ URLSession ๋™์ž‘์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์‹œ์—๋Š” Mock URLSession์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๊ฒƒ์ด ์˜ˆ์‹œ๋กœ ๋งŽ์ด ๋‚˜์™”๋‹ค. ๋งŒ์•ฝ ์ด๋ฏธ Alamofire์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ํ•œ ๋ฒˆ ๋” ์ถ”์ƒํ™” ํ•œ Moya๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๊ฒ ์ง€๋งŒ ์šฐ์„ ์€ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ ์ˆ˜์ •์ด ์ตœ๋Œ€ํ•œ ์ ์€ ์ชฝ์œผ๋กœ Alamofire๋กœ Unit Test๋ฅผ ์‹œ๋„ํ•ด ๋ณด์ž! Session ๊ธฐ์กด์— ์‚ฌ์šฉํ•œ NetworkManager๋Š” Singleton ํŒจํ„ด์œผ๋กœ ๋˜์–ด ์žˆ๋‹ค. ์™ธ๋ถ€์—์„œ ์ง์ ‘ Session์„ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‚ด๋ถ€์—์„œ req.. 2023. 4. 21.
[Unit Test] Test Double Unit Test๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ request๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์˜ํ–ฅ์„ ๋ฐ›๊ฒŒ ๋จ. ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋กœ์ง์„ ์ž‘์„ฑํ–ˆ๋‹ค ํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ Unit Test๋Š” ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์ง„ํ–‰๋˜์–ด์•ผ ํ•จ ์•ˆ์ •์„ฑ ์™ธ์—๋„ ์‹ค์ œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๊ฒŒ ๋˜๋ฉด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์†๋„๊ฐ€ ๋Š๋ ค์ง ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ๊ฐ์ฒด๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ๋„คํŠธ์›Œํ‚น ํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ŠคํŠธ ํ•  ๋•Œ ๋Œ€์‹  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ํ…Œ์ŠคํŠธ ๋”๋ธ”์ด๋ผ๊ณ  ํ•จ Dummy ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ ๊ธฐ๋Šฅ์€ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด => ์ „๋‹ฌ์€ ๋˜์ง€๋งŒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ ์•„๋ฌด๋Ÿฐ ๋™์ž‘์„ ํ•˜์ง€ ์•Š์•„๋„ ํ…Œ์ŠคํŠธ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฐ์ฒด Fake ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๋‹ค๋ฅธ ์™ธ๋ถ€ ๊ฐ์ฒด์˜ ๋™์ž‘์„ ๋‹จ์ˆœํ™” ํ•ด์„œ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด์ด์ง€๋งŒ ์‹ค์ œ ํ”„๋กœ๋•.. 2023. 4. 14.
[iOS/Swift] ๋น„๋™๊ธฐ(async) ํ…Œ์ŠคํŠธ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ ๋ฐ ์ถœ์ฒ˜ ์›๋ฌธ Kodeco์˜ iOS Unit Testing and UI Testing Tutorial์„ ๋ฒˆ์—ญํ•œ yoonbumatae์˜ ๊ธ€์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์‹œ๋ ค๋ฉด ์•„๋ž˜ ๋‘ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”! https://www.kodeco.com/21020457-ios-unit-testing-and-ui-testing-tutorial iOS Unit Testing and UI Testing Tutorial Learn how to add unit tests and UI tests to your iOS apps, and how you can check on your code coverage. www.kodeco.com http://yoonbumtae.com/?p=4020 Swift.. 2023. 4. 14.
[iOS/Swift] ๋™๊ธฐ(sync) ํ…Œ์ŠคํŠธ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ ๋ฐ ์ถœ์ฒ˜ ์›๋ฌธ Kodeco์˜ iOS Unit Testing and UI Testing Tutorial์„ ๋ฒˆ์—ญํ•œ yoonbumatae์˜ ๊ธ€์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์‹œ๋ ค๋ฉด ์•„๋ž˜ ๋‘ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”! https://www.kodeco.com/21020457-ios-unit-testing-and-ui-testing-tutorial iOS Unit Testing and UI Testing Tutorial Learn how to add unit tests and UI tests to your iOS apps, and how you can check on your code coverage. www.kodeco.com http://yoonbumtae.com/?p=4020 Swift.. 2023. 4. 13.
[iOS/Swift] XCTestCase ์ƒ์„ฑํ•˜๊ธฐ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ ๋ฐ ์ถœ์ฒ˜ ์›๋ฌธ Kodeco์˜ iOS Unit Testing and UI Testing Tutorial์„ ๋ฒˆ์—ญํ•œ yoonbumatae์˜ ๊ธ€์„ ์ •๋ฆฌํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์‹œ๋ ค๋ฉด ์•„๋ž˜ ๋‘ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”! https://www.kodeco.com/21020457-ios-unit-testing-and-ui-testing-tutorial iOS Unit Testing and UI Testing Tutorial Learn how to add unit tests and UI tests to your iOS apps, and how you can check on your code coverage. www.kodeco.com http://yoonbumtae.com/?p=4020 Swift.. 2023. 4. 13.