
UserDefaults의 정체
UserDefaults의 정체는 iOS에서 사용하는 사용자의 설정이나 간단한 데이터등을 key-value 쌍으로 디바이스에 저장하는 데이터베이스입니다.
쉽게 설명하기 위해 비유해 본다면, UserDefaults는 개인적인 설정이나 간단한 데이터를 저장하고 필요할 때 쉽게 불러올 수 있는 iOS의 개인 일기장이라고 할 수 있습니다. 각각의 데이터는 고유한 키로 식별되며, 이는 날짜별로 일기를 구분하는 것과 같이 데이터를 정리하는 데 유용합니다. 이를 통해 앱의 중요한 정보를 손쉽게 저장하고 관리할 수 있습니다.
1. UserDefaults에 데이터 저장
UserDefaults 데이터 저장 방법
let sampleData = ["Item 1", "Item 2", "Item 3"]
UserDefaults.standard.set(sampleData, forKey: "myData")
이때, key의 값은 String(문자열)입니다.
Q. 여기저기 뿌려진 key 값을 변경하려면 엄청 번거롭겠네요?
더보기
만약 여기저기 분포되어 있는 key 값을 변경하려면 시간도 오래 걸리고 오타가 날 수도 있겠죠?
이럴 땐 key값을 변수로 따로 저장해서 관리해 보세요.
let keyString = “myData”
let sampleData = ["Item 1", "Item 2", "Item 3"]
UserDefaults.standard.set(sampleData, forKey: keyString)
그런데 여기서 UserDefaults.standard를 매번 작성하기 귀찮다 하시면,
let myUserDefaults = UserDefaults.standard
이것도 변수에 저장해서 사용하면 됩니다.
2. 저장된 데이터 로드
UserDefaults에 저장된 데이터 로드 방법
if let loadedData = UserDefaults.standard.array(forKey: "myData") as? [String] {
print(loadedData) // ["Item 1", "Item 2", "Item 3"]
}
3. 사용 예시
이제 UICollectionView에서 UserDefaults로 가져온 값을 사용해 보겠습니다.
class MyViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
@IBOutlet weak var collectionView: UICollectionView!
var data = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// 저장된 데이터 로드
if let loadedData = UserDefaults.standard.array(forKey: "myData") as? [String] {
data = loadedData
}
collectionView.dataSource = self
collectionView.delegate = self
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return data.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "myCell", for: indexPath) as! MyCollectionViewCell
cell.label.text = data[indexPath.item]
return cell
}
}
위와 같은 방법으로 UserDefaults에서 가져온 값을 UICollectionView에서 보여줄 수 있습니다.
4. 데이터 추가 및 저장
만약 여기서 데이터를 추가, 변경하고 싶다면?
func addItem(_ item: String) {
data.append(item)
UserDefaults.standard.set(data, forKey: "myData")
collectionView.reloadData()
}
'걔 (개발)로그 > Swift' 카테고리의 다른 글
| Swift에서 상속 (Inheritance) (0) | 2024.05.17 |
|---|---|
| Swift에서 인스턴스 (Instance) 및 인스턴스 메서드 (Instance Methods) (0) | 2024.05.17 |
| Swift에서 옵셔널의 모든 것 (1) | 2024.05.16 |
| Swift에서의 전달인자(Argument), 매개변수(Parameter), 반환타입(Return Type) | 이건 또 뭐여 (0) | 2024.05.15 |
| Swift에서의 함수? 클래스? 메서드? | 그래서 걔들이 뭔데? (0) | 2024.05.15 |