SWIFT
-
Model your schema with SwiftData (feat. WWDC 2023)SwiftData 2023. 6. 13. 12:02
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ ์ด์ SwiftData์ ๋ชจ๋ธ ์คํค๋ง๋ค์ ๋ํด ์์๋ณด๋ ค ํฉ๋๋ค๐๐ป Utilizing schema macros ์คํค๋ง ๋งคํฌ๋ก๋ฅผ ์ต๋ํ ํ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณผ๊น์? ์คํค๋ง ๋งคํฌ๋ก๋ฅผ ํ์ฉํ๋ฉด ์ฑ์์ ์๋ฒฝํ๊ฒ ์๋ํ๋๋ก ์ง์์ ์ธ ํ๊ฒฝ์ ๋์์ ์ปค์คํ ํ๊ฒ ์ง์ ํ ์ ์์ด์. @Model final class Trip { var name: String var destination: String var start_date: Date var end_date: Date var bucketList: [BucketListItem]? = [] var livingAccommodation: LivingAccommodation? ... } ๊ธฐ๋ณธ์ ์ผ๋ก ํด๋นํ๋ ๋ชจ๋ธ์ด ์์๋ ์ฌ๊ธฐ์ ๊ฐ ..
-
Build an app with SwiftData (feat. WWDC 2023)SwiftData 2023. 6. 13. 10:51
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ WWDC 2023์์ ๊ณต๊ฐ๋ SwiftData๋ก ์ฑ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ตํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ฐ์ ์ด๋ฒ ํฌ์คํ ์ WWDC 2023์ ์น์ ์ ๋ณด๋ฉด์ ์๊ฐํ๋ ์ฑ์ ๋ค์ด ๋ฐ์ ๊ฐ์ด ์งํ๋๋ ํ์์ ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์๋ ๋งํฌ๋ฅผ ํตํด ํด๋น ํ๋ก์ ํธ๋ฅผ ๋ค์ด ๋ฐ์์ ๊ฐ์ด ์ดํด๋ณด๋ฉด์ ํ๋ฆ์ ์ดํดํ๋๊ฒ์ด ์ข์ต๋๋ค๐ https://developer.apple.com/documentation/SwiftUI/Building-a-document-based-app-using-SwiftData Building a document-based app using SwiftData | Apple Developer Documentation Code along with the WWDC presen..
-
Expand on Swift macros (feat. WWDC 2023)Swift 2023. 6. 10. 09:37
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Swift 5.9์์ ์๊ฐ๋ ๋งคํฌ๋ก ๊ธฐ๋ฅ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค๐ Why macros? ์ฐ์ ๋งคํฌ๋ก๋ฅผ ์ ๋ง๋ค์๋์ง ๊ทธ ์ ํ์ ์๊ธฐ๋ฅผ ๋ค์ด๋ณผ๊น์? Swift๋ ํํ์ ์ธ ์ฝ๋์ API๋ฅผ ์์ฑํ๋๊ฒ์ ๋ฅํฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ฌ์ฉ์๊ฐ ๋ฐ๋ณต์ ์ธ ์์ฉ๊ตฌ ์์ฑ์ ํผํ๋๋ฐ ๋์์ด ๋๋ result builders์ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๊ณค ํ์ฃ . ์ฆ ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด Codable์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ํํ ์ ํ์ ์์ด Codable์ ์ฌ์ฉํ ์ ์๊ณ Codable ์ง์์ ์ถ๊ฐํ๋๊ฒ์ด ์ฝ๋๋ฅผ ๋๋ฆฌ๋ฉด์๊น์ง ์์ฑํ ๊ฐ์น๊ฐ ์๋์ง ํ๋จํ๊ณ ๊ฒฐ์ ํ ํ์๊ฐ ์๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ๊น์ง๋ Swift ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด์ ํ๋กํผํฐ ๋ํผ๋ผ๋์ง Result builders๋ผ๋์ง ๋ฑ ๋ง์ด ์ ํด๋ดค๋ ๊ธฐ..
-
Swift 5.9 ์ฌ์ฉ ๋ง๋ณด๊ธฐ (feat. WWDC 2023)Swift 2023. 6. 9. 15:41
์๋ ํ์ธ์. ๊ทธ๋ฆฐ์ ๋๋ค๐ ์ด๋ฒ ํฌ์คํ ์์๋ Swift 5.9๊ฐ ์๊ฐ๋๋ฉด์ ์๋ก ๋์จ๊ฒ๋ค์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค๐๐ป ์ ์ฒด์ ์ผ๋ก Swift ๊ฐ๋ฐ ํ๋ก์ ํธ ๋ฐฉ์์ ์ ๋ฐ์ดํธ๋ถํฐ ์ธ์ด์ ์ผ๋ก ๋งคํฌ๋ก ๊ธฐ๋ฅ๋ ์ด๋ฒ์ ์๊ฒผ๊ณ ์ฑ๋ฅ ๋ฐ ์์ ๋๋ ๋ง์ด ํฅ์๋์๋ค๊ณ ํด์. ์ ๋ ์ด๋ฒ ํฌ์คํ ์์๋ ์ค์ ์ ์ผ๋ก Swift ์ธ์ด์๋ง ํฌ์ปค์ฑ์ ๋ง์ถฐ ํ๋ฒ ๋ณผ๊นํฉ๋๋ค. if ๋ฐ switch ํํ ๋ณ์๋ฅผ ์ด๊ธฐํ ํ ๋ ์ด์ ๋ ์๋์ ๊ฐ์ด if ๋ฐ switch ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฆ, ์ฝ๋๋ฅผ ์ค์ด๋๋ฐ ๋ง์ ๋์์ ์ค๋๋ค๐ // if let score = 800 let simpleResult = if score > 500 { "Pass" } else { "Fail" } print(simpleResult) // switch let comp..
-
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์ ๋ํด ์์๋ณด๋ ค ..