[swift] 뷰 간의 데이터 공유와 상태 관리

앱 내에서는 여러 뷰 간에 데이터를 전달하고 상태를 관리해야 하는 경우가 있습니다. 이를 위해 Swift에서는 여러 방법을 제공합니다. 데이터 공유 및 상태 관리를 위한 주요 방법에 대해 알아보고자 합니다.

1. 뷰 간 데이터 전달

데이터를 뷰 간에 전달하는 방법에는 여러가지가 있습니다.

1.1. Segues를 이용한 데이터 전달

Segues를 이용하여 뷰 간의 이동 시 데이터를 전달할 수 있습니다. prepare 메소드를 통해 데이터를 전달하는 방법이 흔히 사용됩니다.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail" {
        if let destinationVC = segue.destination as? DetailViewController {
            destinationVC.data = someData
        }
    }
}

1.2. Delegate 패턴 사용

Delegate를 이용하여 데이터를 전달할 수 있습니다. 프로토콜을 정의하고 해당 프로토콜을 채택하여 데이터를 주고받습니다.

protocol DataDelegate: AnyObject {
    func sendData(data: Any)
}

class SourceViewController: UIViewController {
    weak var delegate: DataDelegate?

    func sendDataToDestination() {
        delegate?.sendData(data: someData)
    }
}

class DestinationViewController: UIViewController, DataDelegate {
    func receiveData(data: Any) {
        // Handle received data
    }
}

2. 뷰 상태 관리

뷰 간의 상태를 유지하고 관리하기 위해서는 몇 가지 방법을 사용할 수 있습니다.

2.1. UserDefaults 사용

간단한 상태 정보의 경우, UserDefaults를 사용하여 데이터를 저장하고 가져올 수 있습니다.

UserDefaults.standard.set(value, forKey: "key")
let savedValue = UserDefaults.standard.object(forKey: "key")

2.2. Core Data 또는 Realm 사용

복잡한 데이터 모델이나 대량의 데이터를 다루는 경우, Core Data나 Realm과 같은 데이터베이스를 사용하여 상태를 관리할 수 있습니다.

결론

Swift에서는 데이터 공유와 상태 관리를 위한 다양한 방법을 제공합니다. 각 상황에 맞게 적합한 방법을 선택하여 뷰 간의 데이터 전달 및 상태 관리를 효율적으로 처리할 수 있습니다.

이상으로 뷰 간의 데이터 공유와 상태 관리에 대해 알아보았습니다.


참고 문서: