[swift] 클래스의 데이터베이스 연동 방법

클래스를 데이터베이스와 연동하여 데이터를 저장하고 검색하는 것은 모바일 앱 및 웹 애플리케이션 개발에 매우 중요합니다. 불행히도 Swift에는 내장된 데이터베이스 연동 기능이 없으며, 따라서 iOS 또는 macOS 애플리케이션에서 데이터베이스와 연동하기 위해 SQLite, Core Data, 또는 Realm과 같은 외부 라이브러리를 사용해야 합니다.

아래는 SQLite를 사용하여 Swift 클래스를 데이터베이스와 연동하는 간단한 방법입니다.

SQLite 데이터베이스와 연동하는 방법

Step 1: SQLite 라이브러리 추가

먼저, 프로젝트에 SQLite 라이브러리를 추가해야 합니다. CocoaPods를 사용한다면, Podfile에 다음과 같이 추가합니다:

pod 'SQLite.swift'

Step 2: 데이터 모델 클래스 작성

다음으로, 데이터 모델을 정의하는 클래스를 작성해야 합니다. 예를 들어, 간단한 Person 클래스를 만들어보겠습니다.

import SQLite

class Person {
    var id: Int64
    var name: String
    var age: Int
    
    init(id: Int64, name: String, age: Int) {
        self.id = id
        self.name = name
        self.age = age
    }
}

Step 3: 데이터베이스 연동

이제 SQLite 데이터베이스와 연동하고 데이터를 추가하거나 검색하는 등의 작업을 할 수 있는 데이터베이스 연동 클래스를 작성해야 합니다.

import SQLite

class DatabaseManager {
    private let db: Connection
    
    init() {
        let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
        db = try! Connection("\(path)/db.sqlite3")
    }
    
    func createTable() {
        let table = Table("people")
        let id = Expression<Int64>("id")
        let name = Expression<String>("name")
        let age = Expression<Int>("age")
        
        try! db.run(table.create { t in
            t.column(id, primaryKey: true)
            t.column(name)
            t.column(age)
        })
    }
    
    func insert(person: Person) {
        let table = Table("people")
        let insert = table.insert(
            name <- person.name,
            age <- person.age
        )
        
        try! db.run(insert)
    }
    
    func getPeople() -> [Person] {
        let table = Table("people")
        var people = [Person]()
        
        for person in try! db.prepare(table) {
            let p = Person(id: person[id], name: person[name], age: person[age])
            people.append(p)
        }
        
        return people
    }
}

위의 예제는 SQLite.swift 라이브러리를 사용하여 데이터베이스와 클래스를 연동하는 간단한 방법을 보여줍니다. 데이터베이스 연동에 대한 더 많은 세부 정보는 SQLite.swift의 공식 문서를 참조해 주세요.

이처럼 Swift에서도 외부 라이브러리를 활용하여 데이터베이스와 클래스를 연동함으로써, 데이터의 영속적인 보관 및 검색을 쉽게 할 수 있습니다.