ram2 ๐Ÿš—

Swift Data์— ๋Œ€ํ•˜์—ฌ [๊ณต์‹๋ฌธ์„œ ๊ธฐ๋ฐ˜] ๋ณธ๋ฌธ

๐ŸŽ Swift

Swift Data์— ๋Œ€ํ•˜์—ฌ [๊ณต์‹๋ฌธ์„œ ๊ธฐ๋ฐ˜]

coram22 2023. 7. 4. 14:49
728x90
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

 

๋ฐ˜์‘ํ˜•

 

์ตœ๊ทผ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ swift data๋ฅผ ์‚ฌ์šฉํ• ์ง€, realm์„ ์‚ฌ์šฉํ• ์ง€ ๊ณ ๋ฏผํ•ด์˜ค๊ธฐ๋กœ ํ–ˆ๋‹ค.

swift์— ์ž…๋ฌธํ•œ์ง€ ์–ผ๋งˆ ๋˜์ง€ ์•Š์€ ๋‚˜๋Š” ์‚ฌ์‹ค ๋‘˜ ๋‹ค ์ž˜ ๋ชจ๋ฅธ๋‹ค...

swift Data์— ๋Œ€ํ•œ ๊ณต์‹ ๋ฌธ์„œ์„ ์งง๊ฒŒ ํ•œ๊ตญ์–ด๋กœ, ๋‚ด๊ฐ€ ์ดํ•ดํ•œ ๋ฐ”๋ฅผ ํ’€์–ด์„œ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

์‹œ์ž‘!

 

๋ฐ˜์‘ํ˜•

 

๐ŸŽ Swift Data

swiftData๋Š” ์„ ์–ธํ˜• ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ data๋ฅผ ์‰ฝ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

์šฐ๋ฆฌ๋Š” swift ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ data๋ฅผ query๋ฅผ ์‚ฌ์šฉ, filterํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด๋Š” swiftUi์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

 

๐ŸŽ swift๋กœ ๋ชจ๋ธ ์ƒ์„ฑํ•˜๊ธฐ

์ถ”๊ฐ€๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ tool์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ @Model ์„ ์‚ฌ์šฉํ•ด์„œ data๋ฅผ ๊ตฌ์กฐํ™” ํ•˜๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

swiftData๋Š” ์ž๋™์œผ๋กœ ๋งŽ์€ ๊ด€๊ณ„๋“ค์„ ์ถ”๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์šฐ๋ฆฌ๋Š” @Attribute(.unique)์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์„ ์–ธ์„ ํ†ตํ•ด ์ œ์•ฝ๋“ค์„ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ์€ SwiftUI์—์„œ ์ด๋ฅผ ์ ์šฉํ•œ ์ฝ”๋“œ ์˜ˆ์‹œ์ด๋‹ค.

@Model
class Recipe {
	@Attribute(.unique) var name: String
	var summary: String?
	var ingredients: [Ingredient]
}

 

๋ฐ˜์‘ํ˜•

๐ŸŽ Automatic persistence

swiftData๋Š” ์šฐ๋ฆฌ์˜ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์ •์˜ ์Šคํ‚ค๋งˆ๋ฅผ ๊ตฌ์ถ•ํ•ด์ฃผ๊ณ , ํ•ด๋‹น ๋ชจ๋ธ์˜ fields๋ฅผ ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€์— ํšจ์œจ์ ์œผ๋กœ ๋งคํ•‘ํ•ด์ค€๋‹ค.

์ฆ‰, ๋ชจ๋ธ์˜ ํ•„๋“œ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ์—ด๋กœ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ!

swiftData๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด๋“ค์€ ํ•„์š”ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ถ”๊ฐ€์ ์ธ ์ž‘์—… ์—†์ด ์›ํ•˜๋Š” ์ ์ ˆํ•œ ์‹œ์ ์— ์ž๋™์œผ๋กœ ์ €์žฅ๋œ๋‹ค. ๋˜ํ•œ, ModelContext API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒด์ ์ธ ์ œ์–ด๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•

 

๐ŸŽ Integrates with SwiftUI

SwiftUI view์—์„œ @Query๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

SwiftData์™€ SwiftUI๋Š” ํ•จ๊ป˜ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์ˆ˜๋™์œผ๋กœ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜์ง€ ์•Š์•„๋„ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.

@Query var recipes: [Recipe]
var body: some View {
	List(recipes) { recipe in
		NavigationLink(recipe.name, destination: RecipeView(recipe))
	}
}
๋ฐ˜์‘ํ˜•

 

๐ŸŽ Swift-native predicates

์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๊ฒ€์‚ฌํ•œ ํŠน์ • ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๊ณ , ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด, ๊ฐœ๋ฐœ ์ค‘ ์ƒ๊ธฐ๋Š” ์˜คํƒ€์™€ ์‹ค์ˆ˜๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

let simpleFood = #Predicate<Recipe> { recipe in
	recipe.ingredients.count < 3
}
๋ฐ˜์‘ํ˜•

 

๐ŸŽ CloudKit syncing

ClounKit์™€ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

 

๐ŸŽ Compatible with Core Data

๊ธฐ์กด์— core data๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœํ–ˆ๋‹ค๋ฉด, swift data๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

์–ผ๋ฅธ ํ•œ ๋ฒˆ ์จ๋ณด๊ณ  ์‹ถ๋‹ค !

์ฐธ๊ณ  ๋ฌธ์„œ : https://developer.apple.com/xcode/swiftdata/

 

SwiftUI Overview - Xcode - Apple Developer

SwiftUI is an innovative, exceptionally simple way to build user interfaces across all Apple platforms with the power of Swift.

developer.apple.com

 

728x90
๋ฐ˜์‘ํ˜•

 

 

728x90
๋ฐ˜์‘ํ˜•

 

728x90
๋ฐ˜์‘ํ˜•