[ios] SwiftUI 데이터 저장

SwiftUI 앱을 개발할 때 앱의 데이터를 저장하고 관리하는 것은 매우 중요합니다. 사용자가 앱을 사용하면서 생성한 데이터를 영구적으로 보존하고 나중에 다시 사용할 수 있게 해주는 것이죠. SwiftUI에서 데이터를 저장하는 방법에 대해 알아봅시다.

1. UserDefaults를 이용한 데이터 저장

가장 간단한 방법은 UserDefaults를 이용해 데이터를 저장하는 것입니다. SwiftUI 앱에서는 @AppStorage 속성 래퍼를 사용하여 UserDefaults에 값을 저장하고 검색할 수 있습니다.

예를 들어, 사용자의 선호 색상을 저장하려면 다음과 같이 할 수 있습니다.

@AppStorage("favoriteColor") var favoriteColor: String = "blue"

이렇게 하면 사용자가 선호하는 색상이 UserDefaults에 저장되고 필요할 때 쉽게 가져올 수 있습니다.

2. 파일 시스템을 이용한 데이터 저장

더 복잡한 데이터를 저장하려면 파일 시스템을 사용할 수 있습니다. JSON, Property List, SQLite 또는 기타 데이터베이스를 사용하여 데이터를 저장하고 검색할 수 있습니다. SwiftUI 앱에서 FileFileManager를 사용하여 파일 시스템에 액세스할 수 있습니다.

예를 들어, 사용자의 프로필 정보를 JSON 파일에 저장하려면 다음과 같이 할 수 있습니다.

struct Profile: Codable {
    var name: String
    var age: Int
    // 추가 필드
}

func saveProfile(_ profile: Profile) {
    let encoder = JSONEncoder()
    if let encoded = try? encoder.encode(profile) {
        // 파일 시스템에 저장
        let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
        let profileURL = documentsURL.appendingPathComponent("profile.json")
        try? encoded.write(to: profileURL, options: .noFileProtection)
    }
}

이렇게 하면 사용자의 프로필 정보가 JSON 파일에 저장되고 나중에 필요할 때 파일 시스템에서 가져올 수 있습니다.

3. 데이터베이스를 이용한 데이터 저장

더 많은 데이터를 저장하고 복잡한 쿼리를 실행해야 하는 경우 CoreData 또는 Realm과 같은 데이터베이스를 사용할 수 있습니다. SwiftUI 앱에서 데이터베이스를 효율적으로 사용하기 위해 @FetchRequest와 같은 기능을 활용할 수 있습니다.

예를 들어, 사용자의 할 일 목록을 CoreData를 사용하여 저장하고 검색하려면 다음과 같이 할 수 있습니다.

@FetchRequest(entity: Todo.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Todo.dueDate, ascending: true)]) var todos: FetchedResults<Todo>

이렇게 하면 CoreData를 사용하여 할 일 목록을 효율적으로 관리할 수 있습니다.

결론

SwiftUI 앱에서 데이터를 저장하는 방법은 여러 가지가 있습니다. 간단한 앱에서는 UserDefaults를 사용하고 더 복잡한 앱에서는 파일 시스템이나 데이터베이스를 사용할 수 있습니다. 앱의 요구 사항에 맞게 적절한 데이터 저장 방법을 선택하여 데이터를 효율적으로 관리하고 영구적으로 보존해야 합니다.

참고 자료: SwiftUI Tutorials by Apple