SWIFT
-
Meet SwiftData (feat. WWDC 2023)SwiftData 2023. 6. 8. 05:06
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ๋ถํฐ SwiftData ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ง๋ค์ด WWDC 2023์์ ์๊ฐํด์ฃผ๋ SwiftData์ ๋ํด ๋ค๋ค๋ณด๋ คํฉ๋๋ค. ๊ทธ ์ฒซ๋ฒ์งธ ์ฃผ์๋ Meet SwiftData์ ๋๋ค. ์๋ง SwiftData๋ฅผ ๋ฅํ๊ฒ ๋ค์ด๊ฐ๊ธฐ์ ์๊ฐํ๋ ์น์ ์ผ๊ฒ ๊ฐ์์. SwiftData SwiftData๋ ์ด๋ฒ WWDC 2023์์ ์๊ฐ๋ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ํ๋ ์์ํฌ๋ก Swift ์ฑ์ ํฅ์์ ๋์ต๋๋ค. SwiftUI์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ธ๋ถ ํ์ผ ํ์์ด ์๋ ์ฝ๋์ ์ ์ ์ผ๋ก ์ง์คํ๊ณ Swift์ ์๋ก์ด ๋งคํฌ๋ก ์์คํ ์ ์ฌ์ฉํด ์ํํ API๋ฅผ ์ ๊ณตํด์ฃผ์ฃ . ํนํ SwiftUI์ ์์ฐ์ค๋ฝ๊ฒ ํตํฉ๋๋ฉฐ CloudKit ๋ฐ Widgets๊ณผ ๊ฐ์ ๋ค๋ฅธ ํ๋ซํผ ๊ธฐ๋ฅ๊ณผ๋ ํจ๊ป ์๋๋ฉ๋๋ค. ์ผ์ ์ ์ฝ์ด๋ฐ์ดํฐ๋ฅผ ํตํด..
-
@discardableResult๋ฅผ ์ ์ฐ์ง?Swift 2023. 6. 1. 15:34
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ @discardableResult์ ๋ํด ์ ์ฐ๋์ง ์ด๋จ๋ ์ฐ๋์ง์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์๋ฌธ์ ์์์ ์ฌ์ค @discardableResult์ ๋ํด ๋ฌธ๋ ์ ์จ์ผ๋๋์ง ๊ถ๊ธํด์ ์๊ฐํด๋ณด๋ค๊ฐ ํฌ์คํ ์ ํ๊ฒ ๋์์ต๋๋ค. ๋ณดํต ๋ฆฌํด ๊ฐ์ด ์กด์ฌํ๋ ๋ฉ์๋๋ฅผ ํธ์ถ ์ ํด๋น ๋ฆฌํด ๊ฐ์ ์ฌ์ฉํ์ง ์์๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๋์์ฃผ์ง ์์๋ ์ฌ์ฉํ์์์? ๊ทผ๋ฐ ์๊ฐํด๋ณด๋ฉด ๋ฆฌํด ๊ฐ์ ์ฌ์ฉํ์ง ์์๊ฑฐ๋ฉด ์ ํด๋น ๋ฉ์๋๋ฅผ ์ ์ธํ ๋ ๋ฆฌํด ๊ฐ์ ๊ฐ์ง๊ฒ ํจ์ ์๊ทธ๋์ฒ์ ์ง์ ํด์ค๊น?๋ผ๋ ์๋ฌธ์ด ์๊ฒผ์ด์๐ซ ์ด์ฐจํผ ๋ฆฌํด ๊ฐ์ ์ฌ์ฉํ์ง ์์๊ฑฐ๋ฉด ๋ฆฌํด ํ์ ์ Void ์ฆ ์๋ค๊ณ ์ ์ธํ๋๊ฒ ๋ ๋ง์ง ์๋!?๐ณ๋ผ๊ณ ๊ผฌ๋ฆฌ ์๋ฌธ์ ๋ค์ด ๋ค์์ต๋๋ค! ๊ทธ๋์ ํ๋ฒ @discardableResult์ ๋ํด ์์..
-
identifierForVendor๋ฅผ ์ด์ฉํ ๊ธฐ๊ธฐ ์๋ณํ๊ธฐiOS 2023. 5. 30. 08:48
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ identifierForVendor ๊ฐ์ ์ด์ฉํ์ฌ ๊ธฐ๊ธฐ๋ฅผ ์๋ณํ๋๊ฒ์ ๋ํด ์์๋ณด๋ ค ํฉ๋๋ค๐๐ป ๋ง์ฝ ํด๋น ์ฑ์์ ํน๋ณํ ํ์๊ฐ์ ์ด๋ ์์ ๋ก๊ทธ์ธ ๋ฑ์ ๊ธฐ๋ฅ์ด ์์ง๋ง ๊ธฐ๊ธฐ๋ง๋ค ์๋ณ์ ํด์ฃผ์ด ์๋ฒ์ ํต์ ์ ํ๊ณ ์ถ์๋๊ฐ ์์๊ฒ๋๋ค. ๊ทธ๋ด๋๋ ๋ช๊ฐ์ง ๋ฐฉ๋ฒ๋ค์ด ์์ง๋ง ์ค๋ ์๊ฐํ identifierForVendor์ ๊ฐ์ ์ด์ฉํ์ฌ ํด๋น ์ฑ์์์ ๊ธฐ๊ธฐ๋ณ ์๋ณํ ๊ฐ์ผ๋ก ์ด์ฉํ ์ ์์๊ฒ๋๋ค. ๊ทธ๋ผ ์ฐ์ identifierForVendor๊ฐ ๋ญ์ง๋ถํฐ ์์์ผ๊ฒ ์ฃ ? identifierForVendor? identifierForVendor๋ UIKit์ UIDevice์์ ์ ๊ณตํ๋ ์ธ์คํด์ค ํ๋กํผํฐ์ ๋๋ค. ์ฑ ๊ณต๊ธ์ ์ฒด์ ๋ํด ๊ธฐ๊ธฐ๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๋ ์๋ฌธ๊ณผ ์ซ์๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด..
-
MirrorSwift 2023. 5. 16. 02:54
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Swift์ Mirror๋ผ๋ ํ์ ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ ์ด์ debugPrint์ print๋ฅผ ํฌ์คํ ํ๋ค dump์ ๋ํด์ ์์๋ณด๊ฒ ๋์๋๋ฐ์. ์ฌ๊ธฐ์ dump๋ reflecting์ผ๋ก ์ค๋ ์์๋ณผ Mirror๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํด ํด๋น ์ ๋ณด๋ฅผ ๊ฐ๊ณตํด์ ๋ณด์ฌ์ค๋ค๋๊ฑธ ์์๋ดค์ต๋๋ค. ๊ทธ๋์ ์ฌ๊ธฐ์ Mirror๋ผ๋๊ฒ์ด Swift์์๋ ๋ญ์ง ์์๋ณด๊ฒ ์ต๋๋ค๐บ๐ป (ํน์ ์ด์ ํฌ์คํ ์ ๋ชป๋ณด์ จ์ด๋ ๋ฌด๋ฐฉํ์ง๋ง dump๊ฐ ๋ฌด์์ธ์ง ๊ถ๊ธํ์๋ฉด ์ฌ์ ์ ๋ณด์ ๋ ์ข์ต๋๋ค!) https://green1229.tistory.com/355 debugPrint์ print ์๊ณ ์ฐ๊ธฐ (feat. dump) ์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ debugPrint์ print์ ๋ํด ์์๋ณด๋ ค ..
-
fastlane - IPA & dSYM ํ์ผ ๊ฒฝ๋ก ๋ณ๊ฒฝํ๊ธฐFastlane 2023. 5. 11. 12:47
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ fastlane์ ์ฌ์ฉํ์ฌ ์ฑ์ ๋น๋ํ๊ณ ์ ๋ก๋ํ ๋ ์๊ธฐ๋ IPA & dSYM ํ์ผ์ ๋ค์ด๋ก๋ ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํด๋ณด๋ ค ํฉ๋๋ค๐๐ป ๋ณ๋ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ง ์๋๋ค๋ฉด? ๋จผ์ ์ ์ด๊ฑธ ํ๊ฒ๋์๋๋ฉด Tuist๋ฅผ ํตํด ์ต์๋จ ๊ฒฝ๋ก์ธ workspace๊ฐ ์์ฑ๋๋ ๊ฒฝ๋ก์ fastlane์ ๋ถ์ฌ์ฃผ์์ต๋๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ์ค์ Fastfile์ ๊ตฌ์ถํด ํ ์คํธํ๋ผ์ดํธ์ ์ฑ์ ์ ๋ก๋ ๋ฐฐํฌํ๊ธฐ๊น์ง ๊ณผ์ ์ธ ์๋ ์ฃผ์ 3๋จ๊ณ๋ฅผ ๊ฑฐ์น๊ฒ ๋ฉ๋๋ค. (๋ฌผ๋ก ๊ทธ ์ ์๋ ๋น๋ ๋๋ฒ๋ฅผ ์ฌ๋ ค์ฃผ๊ณ ๊ฐ์ข ์ฑ์ ๋ง๋ ์ค์ ์ ํ๊ฒ ์ง๋ง์..!) - update_app_identifier - build_app - upload_to_testflight build_app ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ฉฐ ์ฑ์ด ๋น๋๋๊ณ iOS ์ฑ ํ์ผ์ธ IP..
-
debugPrint์ print ์๊ณ ์ฐ๊ธฐ (feat. dump)Swift 2023. 5. 8. 09:21
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ debugPrint์ print์ ๋ํด ์์๋ณด๋ ค ํฉ๋๋ค (์กฐ๊ธ ๋ ๋์๊ฐ์ ๊ฐ๋จํ dump๊น์ง!)๐๐ป ์ฌ์ค ๋ง์ iOS ๊ฐ๋ฐ์๋ผ๋ฉด ์ด๋ฏธ ์ต์ํ๊ณ ์ฐจ์ด๋ ์ ์์คํ ๋ฐ ํ๋ฒ ํ์คํ ์ข ๋ ๋ช ํํ๊ฒ ์ ๋ก๊น ์ฉ์ผ๋ก debugPrint๋ฅผ ์จ์ผํ๋์ง ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๋ก๊น ์ํฉ์์ debugPrint๋ฅผ ๊ฐ์ ธ๊ฐ๋๊ฒ ์ข์๊ฑด์ง ์ ๋ฆฌํด๋ณด๋ ค๊ณ ์ด๋ฒ ํฌ์คํ ์ ์ฃผ์ ๋ก ๊ฐ์ ธ์๋ดค์ต๋๋ค๐บ๐ป ๊ทธ๋ผ ์ฐ์ ๊ฐ๋ ์ ์ผ๋ก ๊ฐ๋จํ๊ฒ ์ง๊ณ ๋์ด๊ฐ์ผํ๋ debugPrint์ print์ ๊ฐ๋ ๋ถํฐ ํ์ด๋ณด์์ฃ ! debugPrint ์ฐ์ ๊ณต์๋ฌธ์์์๋ ๋๋ฒ๊น ์ ๊ฐ์ฅ ์ ํฉํ ํ ์คํธ ํํ์ ์ถ๋ ฅ์ ์ฌ์ฉํ๋ค๊ณ ์์ฃผ ๋ก๊น ์ฉ์ผ๋ก ์จ๋ผ!๋ผ๊ณ ๋๋๊ณ ๊ฐ์กฐํ๊ณ ์๋ ๋๋์ ๋๋ค๐ฒ ์ ์ธ์ ๋ณด์๋ฉด ์๋์ ๊ฐ์ต๋๋ค. func debugP..
-
Multiple commands ์๋ฌ ๋ฐ๋ก์ก๊ธฐ (feat. GoogleService-Info.plist)Tuist 2023. 5. 4. 13:41
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ์๋ ๊ฐํน ํ๋ฒ์ฏค ๋ณด์ จ์ Multiple commands ์๋ฌ์ ๋ํด ํ์ ํด๋ณด๊ณ ๋ฐ๋ก์ก๋ ์ค๋ฌด์ ๊ฐ๊น์ด ํฌ์คํ ์ด ๋ ๊ฒ ๊ฐ์์๐๐ป ์ฐ์ , ์ ๋ Tuist๋ฅผ ํตํด ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ๊ณ ์์ฑํด์ฃผ๋๋ฐ ์ด๋ Prod / Dev / QA ์ด 3๊ฐ๋ก ํ๊ฒ ๋ฐ ์คํด์ ๋๋๊ณ ์ํฌ์คํ์ด์ค๋ฅผ ๊ตฌ์ฑํด์ค๋๋ค. ์ ๊ฒฝ์ฐ์ entitlement ํ์ผ์ด๋ผ๋์ง ์๋๋ฉด ํํ ์ฌ์ฉ๋๋ Firebase์ config ์ค์ ์ ์ํด GoogleServiceInfo.plist ํ์ผ์ ๊ตฌ์ฑํด์ฃผ๊ณ ๋ฆฌ์์ค์ ์ฌ์ด์ฃผ๊ฒ ๋๋๋ฐ์. ์ด๋ ๋ฆฌ์์ค ํด๋ ๋ด ๊ฐ ์ด 3๊ฐ์ GoogleServiceInfo.plist ํ์ผ์ด ์๊ธฐ๊ณ ์ด๋ฅผ ๋ฆฌ์์ค๋ก ๋์ผํ๊ฒ ๊ฐ์ ธ๊ฐ๋ คํ๋ ์๋ฌ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋์ ์ด๋ฒ ํฌ์คํ ์์๋ GoogleServiceI..
-
Setting Bundle์ ์ฌ์ฉํด ์ปค์คํ ํ ์ค์ ์ถ๊ฐํ๊ธฐiOS 2023. 5. 1. 20:24
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Setting Bundle์ ์์๋ณด๊ณ ์ด๋ฅผ ์ด์ฉํด ๊ธฐ๋ณธ ์ฑ ์ค์ ์์ ์ปค์คํ ํ ์ค์ ๋ค์ ์ถ๊ฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค๐๐ป ์ด ์ฃผ์ ์ ๋ํด ์์๋ณด๊ฒ ๋ ๊ณ๊ธฐ ์ฐ์ ์์ฝ ์๋ฎฌ๋ ์ดํฐ์์ ๊ฐํน ๋ฐ์ํ๋ ๋ฒ๊ทธ์ธ์ง ์ ๋ ์์ง ๋ช ํํ ์์ธ์ ์ฐพ์ ์ ์๋ ๋ฌธ์ ๊ฐ ์์์ด์! ์๋ฅผ๋ค์ด, ํ ์ด ํ๋ก์ ํธ๋ก ์ค์ ์ฑ ์คํ ์ด์ ๋ฐฐํฌ๋์ง ์์ ์ฑ์์ ์์น ์ ๋ณด๋ฅผ ๋ฐ์์จ๋ค๊ณ ๊ฐ์ ํด๋ณผ๊ป์. ๊ทธ๋ด๋ ์ฐ๋ฆฌ๋ ์์น ์ ๋ณด ํ์ฉ์ ๋ํ ์์ฒญ์ ๋ณด๋ด๊ณ ์ด๋ ๋๋ฐ์ด์ค ๊ธฐ๋ณธ ํด๋น ์ฑ ์ค์ ์์ ํ์ธํ ์ ์์ด์. ์ฆ, ๋๋ฐ์ด์ค > ์ค์ ์์ ํด๋น ์ฑ์ด ๋ชฉ๋ก์ ๋ ธ์ถ๋์ด์ผ ํ๋๋ฐ ๋ ธ์ถ๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ทธ๋์ ์ฌ์ค์ ๋ช ํํ ํ ์คํธ๋ฅผ ํด๋ณผ ์๊ฐ ์์๋ ์ด์๋ก ์ธํด ํ ์คํธ๋ฅผ ์ํด์ ๊ธฐ๋ณธ ์ฑ ์ค์ ์ด ๋ชฉ๋ก์ ๋ํ๋๊ฒ..