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

์ „์ฒด ๊ธ€196

[RealmSwift] primaryKey์™€ AutoIncrease PrimaryKey class Customer: Object { @objc dynamic var idx = 0 } primaryKey๋กœ ์‚ฌ์šฉํ•  ํ”„๋กœํผํ‹ฐ๋ฅผ ์ •์˜ํ•ด์คŒ override class func primaryKey() -> String? { return "idx" } primaryKey๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•˜์—ฌ ์‰ฝ๊ฒŒ primaryKey ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Œ ๋ฆฌํ„ด๊ฐ’์ด String์ด๋ฏ€๋กœ ํ”„๋กœํผํ‹ฐ ๋ช…์„ ์ŠคํŠธ๋ง์œผ๋กœ ๋ฆฌํ„ดํ•ด์คŒ AutoIncrease primaryKey๋กœ ์ง€์ •ํ–ˆ๋‹ค๊ณ  ์ž๋™์œผ๋กœ ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ๊ณ ์œ ๊ฐ’์„ ๊ฐ€์ง€๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์—†์Œ realm์€ ์‚ฌ์šฉ์ž ์ง€์ • ํ•จ์ˆ˜์™€ ํ”„๋กœํผํ‹ฐ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ธธ๋•Œ๋งˆ๋‹ค ๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ ์ฐธ๊ณ  ์‚ฌ์ดํŠธ : https://stackoverf.. 2022. 10. 2.
[RealmSwift] ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— enum์œผ๋กœ ํƒ€์ž… ์ง€์ •ํ•˜๊ธฐ ํ•„๋“œ ๊ฐ’์˜ ์ง€์ •๋œ ํƒ€์ž…์ด ์žˆ๊ฑฐ๋‚˜ ๋“ฑ๊ธ‰์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋“ฑ์— enum์˜ ์žฅ์ ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ enum์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ •ํ•ด์ง„ ์ž…๋ ฅ๊ฐ’ ๋‚ด์—์„œ ์ž…๋ ฅํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์Œ ๊ฐ’์„ ์ž…๋ ฅํ•  ๋•Œ String์ด๋‚˜ Int๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ •ํ•ด์ง„ ํƒ€์ž…์„ ์ž…๋ ฅํ•˜๋ฏ€๋กœ ์ข€๋” ์ง๊ด€์ ์ž„ enum CustomerType: Int { /// ํ™œ๋™ ๊ณ„์ •, default case active /// ํœด๋ฉด ๊ณ„์ • case dormant /// ์ •์ง€ ๊ณ„์ • case suspension } CustomerType enum์„ ์ •์˜ํ•ด ์คŒ (enum์—์„œ ๊ฐ case์˜ ๊ฐ’์„ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ •์˜ํ•ด์ค€ ์ˆœ์„œ๋Œ€๋กœ 0, 1, 2.. ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ฐ€์žฅ ์ฒ˜์Œ ์ •์˜๋œ case์— 71์„ ์ง€์ •ํ•ด ์ฃผ์—ˆ๋‹ค๋ฉด 71, 72, 73... ์ˆœ์œผ๋กœ ๊ฐ’์„.. 2022. 10. 2.
[iOS/Swift] WKWebView์—์„œ Scheme๊ณผ Query๋กœ web๊ณผ communicationํ•˜๊ธฐ func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) navigationAction๊ณผ decisionHandler๋ฅผ ๊ฐ€์ง„ ์ด ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ return decisionHandler(.allow) // or return decisionHandler(.cancel) ํŠน๋ณ„ํ•œ ์ผ์ด ์—†๋‹ค๋ฉด decisionHandler๋กœ allow๋ฅผ ์ „๋‹ฌ. URL์— ์˜ํ•œ ํ™”๋ฉด ์ด๋™, ๋กœ๋“œ๋ฅผ ๋ง‰์œผ๋ ค๋ฉด cancel๋กœ ์ „๋‹ฌ URL Scheme ์–ป์–ด์˜ค๊ธฐ if let url = navigationAction.request.ur.. 2022. 9. 26.
[iOS/Swift] WKWebView URL ๋กœ๋“œ ํ•˜๊ธฐ, Request ์„ค์ •ํ•˜๊ธฐ private let wkWebView = WKWebView() ์ „์—ญ ๋ณ€์ˆ˜ ์ƒ์„ฑ var rootURL: URL? { didSet { setupRequest() } } ์ด๋‹ˆ์…œ๋ผ์ด์ €๋กœ ์„ค์ •ํ•ด๋„ ๋˜๊ณ  rootURL ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ didSet์œผ๋กœ ์˜ต์ €๋น™ rootURL์ด ์„ค์ •๋˜๋ฉด setupRequest()๋ฅผ ํ˜ธ์ถœํ•จ private func setupRequest() { guard let rootURL = rootURL else { return } print("\(rootURL) \(#file.split(separator: "/").last!)-\(#function)[\(#line)]") let request = URLRequest(url: rootURL) wkWebView.load(request) wkWebV.. 2022. 9. 26.
[Framer] Figma ํ”„๋กœ์ ํŠธ Framer๋กœ ์ด๋™์‹œํ‚ค๊ธฐ(Importing) Framer๋Š” ํ”„๋กœํ† ํƒ€์ž…์— ์ตœ์ ํ™”๋œ ํˆด์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด์— ์Šค์ผ€์น˜๋‚˜ ํ”ผ๊ทธ๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค๋ฉด ์ด๋ฅผ Framer์— ๊ฐ€์ง€๊ณ  ์™€์„œ ์ž‘์—…์„ ์ง„ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿฅณ Figma์—์„œ Framer๋กœ ์ด๋™ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”ผ๊ทธ๋งˆ์˜ ๋Œ€์‰ฌ ๋ณด๋“œ์—์„œ ์ž‘์—… ํŒŒ์ผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค ํ”„๋ž˜๋จธ๋กœ ์ž„ํฌํŠธํ•  ๋ ˆ์ด์–ด๋ฅผ ๋“œ๋ž˜๊ทธ ํ˜น์€ ์„ ํƒํ•ด ์ค๋‹ˆ๋‹ค. ๊ทธ ํ›„ ์ƒ๋‹จ์˜ ๋„ํ˜• ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๊ทธ๋ ค์ ธ ์žˆ๋Š” ์•„์ด์ฝ˜์„ ๋ˆ„๋ฅธ ๋’ค Plugins์—์„œ "Figma to HTML with Framer"๋ฅผ ๊ฒ€์ƒ‰ํ•ด ์ค๋‹ˆ๋‹ค. ์œ„ ์ด๋ฏธ์ง€์—์„œ ๋‘๋ฒˆ์งธ์— ์žˆ๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‚ฌ์šฉํ•  ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ธ์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” "Run"๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ”ผ๊ทธ๋งˆ์˜ ๋ ˆ์ด์–ด๋ฅผ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์œ„ ์ฐฝ์ด ๋‚˜ํƒ€๋‚œ๋‹ค๋ฉด "Copy to clip.. 2022. 9. 25.
[iOS/RxSwift] RxSwift์™€ RxRealm์œผ๋กœ UICollectionView์‚ฌ์šฉํ•˜๊ธฐ Realm์€ Object๋ฅผ ์ƒ์† ๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ํƒ€์ž…์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๊ฐ์ฒด๋“ค์„ ์ฝ์–ด ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. private lazy var results = try! Realm().objects(Category.self) keyPath์— ์ „๋‹ฌ๋œ ํ•„๋“œ๊ฐ’์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ, ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•ด์„œ ์ „๋‹ฌ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. id ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ํ•ด์ฃผ๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ž‘์„ฑํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. var updates = try! Realm().objects(Category.self).sorted(byKeyPath: "id", ascending: true) ์ด๋ ‡๊ฒŒ ์ ์–ด ์ฃผ์–ด๋„ ๋˜๊ณ  ์ „์—ญ ๋ณ€์ˆ˜๋กœ realm ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ๋นผ์ฃผ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค let realm = try! Realm() var updates = realm.objects.. 2022. 9. 19.
[iOS/Swift/Library] IQKeyboardManager FirstResponder๋œ UITextField์™€ UITextView๊ฐ€ ํ™”๋ฉด์— ๋ณด์ด๋„๋ก ํ™”๋ฉด ์œ„์น˜๋ฅผ ์ž๋™์œผ๋กœ ์ด๋™ ์‹œ์ผœ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ AutoTool์„ ์‚ฌ์šฉํ•˜๋ฉด ํ‚ค๋ณด๋“œ์˜ ํˆด๋ฐ”๋กœ ๋‹ค์Œ ํ˜น์€ ์ด์ „ UITextField๋‚˜ UITextView๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต ํ•จ IQkeyboardManager.shared.enable = true ๋ฅผ AppDelegate๋‚˜ SceneDelegate์— ์ถ”๊ฐ€ํ•ด ์คŒ class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchO.. 2022. 9. 16.
[iOS/XCode] ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ•œ๊ธ€ ์žํŒ ์‚ฌ์šฉํ•˜๊ธฐ, ํ‚ค๋ณด๋“œ ๊บผ๋‚ด๋Š” ๋ฒ• ์šฐ์„  ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ํ‚ค๋ณด๋“œ๋ฅผ ๊บผ๋‚ด๋Š” ๋‹จ์ถ•ํ‚ค๋Š” Command + Shift + k ์ž…๋‹ˆ๋‹ค ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— ํ•œ๊ธ€ ์ž…๋ ฅ์ด ์•ˆ๋ ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ ์‹ฌ์ง€์–ด ํ‚ค๋ณด๋“œ์— ํ•œ๊ธ€ ์žํŒ๋„ ์—†์–ด์„œ ๋ถˆํŽธํ•  ๋•Œ ์„ค์ •์—์„œ ์‰ฝ๊ฒŒ ํ•œ๊ธ€ ์žํŒ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค~ Simulator ์—์„œ Settings๋กœ ๋“ค์–ด๊ฐ€ ์ค๋‹ˆ๋‹ค General ๋ฉ”๋‰ด๋กœ ๋“ค์–ด๊ฐ€ ์ฃผ์„ธ์š”! ์ƒ๋‹จ์— Keyboard ๋ฉ”๋‰ด๊ฐ€ ๋ณด์ผ ๊บผ์—์š”! ํƒญํ•ด์ค๋‹ˆ๋‹ค Keyboards ๋กœ ๋“ค์–ด๊ฐ€ ์ค๋‹ˆ๋‹ค! ์ฒซ๋ฒˆ์งธ ํ•ญ๋ชฉ์ด์—์š” Add New Keyboard ๋ฅผ ๋ˆŒ๋Ÿฌ์„œ ํ‚ค๋ณด๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค์‹œ๋‹ค Korean๋ฅผ ์ž…๋ ฅํ•ด ์ค๋‹ˆ๋‹ค ์ผ๋ถ€๋ถ„๋งŒ ์ž…๋ ฅํ•ด๋„ ํ•˜๋‹จ์— ๋œน๋‹ˆ๋‹ค! Standard ๋ˆŒ๋Ÿฌ์ฃผ์‹œ๊ณ  Done ๋ˆŒ๋Ÿฌ ์ฃผ์„ธ์š” ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ํ‚ค๋ณด๋“œ์—์„œ ์ง€๊ตฌ๋ณธ ๋ชจ์–‘ ๋ˆ„๋ฅด์‹œ๋ฉด ์˜์–ด/ํ•œ๊ธ€ ํ† ๊ธ€ ๋ฉ๋‹ˆ๋‹ค ๐Ÿฅณ 2022. 9. 14.
[Swift] MVVMC ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ - ํŠœํ† ๋ฆฌ์–ผ 4 (child coordinator ์‚ญ์ œํ•˜๊ธฐ) 2022.07.10 - [๐ŸŽ iOS/Architecture Pattern] - [Swift] MVVMC ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ - ํŠœํ† ๋ฆฌ์–ผ 1 (Coordinator์™€ AppCoordinator ๊ตฌํ˜„ํ•˜๊ธฐ) 2022.07.11 - [๐ŸŽ iOS/Architecture Pattern] - [Swift] MVVMC ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ - ํŠœํ† ๋ฆฌ์–ผ 2 (childCoordinator๋กœ ์ด๋™ํ•˜๊ธฐ) 2022.07.12 - [๐ŸŽ iOS/Architecture Pattern] - [Swift] MVVMC ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ - ํŠœํ† ๋ฆฌ์–ผ 3 (๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ์„œ ํ™”๋ฉด ์ „ํ™˜ํ•˜๊ธฐ) ํ•ด๋‹น ํŠœํ† ๋ฆฌ์–ผ์€ ์œ„ ๊ธ€๊ณผ ์ด์–ด์ง‘๋‹ˆ๋‹ค! ์ด์ „ ํฌ์ŠคํŒ…์—์„œ Coordinator์™€ ํ™”๋ฉด ์ „ํ™˜์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์–ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. MVVMC์—์„œ View์™€ Coordinator์— ๋Œ€ํ•ด.. 2022. 9. 5.
[iOS] Fastlane์œผ๋กœ ์•ฑ ๋ฐฐํฌ ์ž๋™ํ™”ํ•˜๊ธฐ - ์ด๋ก ๊ณผ ์„ค์น˜ ์™œ Fastlane์„ ์‚ฌ์šฉํ–ˆ์„๊นŒ? ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ด์ „์— ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ์˜ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ๋งก๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ง€ ๋ณด์ˆ˜ ์ค‘์ธ ์•ฑ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋งŽ์ง„ ์•Š์ง€๋งŒ ์กฐ๊ธˆ์˜ ์ˆ˜์ •๋งŒ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด 6๊ฐœ์˜ ์•ฑ์„ ๋นŒ๋“œํ•˜์—ฌ in house๋กœ ๋ฐฐํฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ QA๋ฅผ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋‹ค์‹œ ์ˆ˜์ •์„ ํ•˜๊ณ  6๊ฐœ์˜ ์•ฑ์„ ๋นŒ๋“œํ•ด์„œ ๋ฐฐํฌํ•ด์•ผ ํ–ˆ์–ด์š”. QA๊ฐ€ ๋๋‚˜๋ฉด ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ณ„์ •์œผ๋กœ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ๋ฐฐํฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ์ˆ˜์ •์ด๋‚˜ ์š”๊ตฌ ์‚ฌํ•ญ์€ ์ ์ง€๋งŒ ์กฐ๊ธˆ์˜ ์ˆ˜์ •์œผ๋กœ 6๊ฐœ์˜ ์•ฑ์˜ ๋นŒ๋“œ(ํ•˜๋Š” ๊ฒƒ๋„ ์˜ค๋ž˜ ๊ฑธ๋ฆผ)์™€ ๋ฐฐํฌํ•˜๋Š” ์‹œ๊ฐ„์ด ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ค์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—๋„ ์˜ํ–ฅ์ด ์˜ค๋”๋ผ๊ตฌ์š”(์—ฌ๋Ÿฌ๊ฐœ์˜ ์•ฑ์œผ๋กœ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ํšŒ์˜๋ฅผ ์ˆ˜์‹ญ ๋ฒˆ ํ–ˆ์ง€๋งŒ ์•ˆ์ •์„ฑ์˜ ์ด์œ .. 2022. 9. 5.
[CI/CD] ์ง€์†์  ํ†ตํ•ฉ๊ณผ ์ง€์†์  ๋ฐฐํฌ์˜ ๊ฐœ๋…๊ณผ ์žฅ์  Intro ์ด์ „์— ๊ต‰์žฅํžˆ ํฅ๋ฏธ๋กœ์šด ์˜์ƒ์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ๊ธฐํšํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณต๋˜๋Š”์ง€์— ๊ด€๋ จ๋œ ์˜์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๋ฒ„ํŠผ ๋ฐฐ์น˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ๋ณด์ด๊ฒŒ ํ•ด์„œ ์–ด๋–ค ์œ„์น˜์˜ ๋ฒ„ํŠผ์ด ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ˆŒ๋ ธ๋Š”์ง€ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์ด์— ๋”ฐ๋ผ ์˜์‚ฌ ๊ฒฐ์ •์„ ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ด ๋ฒ„ํŠผ์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž˜ ๊ตฌ์ถ•ํ•ด ๋†“์•„์„œ ์กฐ๊ธˆ์˜ ์ˆ˜์ •์œผ๋กœ ๋น ๋ฅด๊ฒŒ A์•ˆ B ์•ˆ์„ ํ…Œ์ŠคํŠธ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ž‘์€ ์ผ๋ถ€๋ถ„์„ ์ˆ˜์ • ํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋‹ค ๋ณด๋ฉด ๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋˜๊ณ  ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐฐํฌํ•˜์—ฌ ์„œ๋น„์Šคํ•˜๋Š” ์ผ์ด ์žฆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ์ด ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ฒ€์ฆ์„ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๊ณ  QA๊ฐ€ ์ด๋ฃจ์–ด์ง„ .. 2022. 9. 3.
unable to boot the simulator launchd failed to respond ํ•ด๊ฒฐ๋ฒ• ์ƒ๋‹จ xCode ํด๋ฆญ > Preferences ํด๋ฆญ Locations ํƒญ ํด๋ฆญ > ํ•˜๋‹จ Derived Data ์˜ ํด๋” ๊ฒฝ๋กœ์—์„œ ํด๋” ์ด๋™ํ•˜๊ธฐ ์•„์ด์ฝ˜ ํด๋ฆญ ํด๋”์—์„œ ํ•„์š”์—†๋Š” DerivedData ์ง€์›Œ ์ฃผ๊ธฐ ๋นŒ๋“œ ํ›„ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์žฌ ์‹คํ–‰ 2022. 8. 22.