앱을 개발하다보면 간단한 정보를 앱에 저장해야할 경우가 자주 발생하는데 변수에 저장한 정보는 앱이 종료되었을때 모두 사라지므로 앱이 삭제되지 않는한 지속적으로 정보를 저장해야할 필요가 있을때 적절한 클래스가 UserDefaults 이다.
일반적인 사용법은 클래스안의 standard 프로퍼티를 이용하는 것이다.
let defaults = UserDefaults.standard
타입프로퍼티 이므로 인스턴스를 생성하지 않고 바로 타입에 접근하여 defaults라는 상수에 할당하였다.
값을 설정할때는 아래와 같이 set 메서드를 이용한다. 저장하는 값은 어떤 타입도 가능하며 그 값을 찾기 위한 키값의 타입은 String 이다.
defaults.set("value", forKey: "key")
defaults.synchronize() // 저장한 정보를 바로 업데이트 할때 사용하는 메서드이다. 보통 시스템에서 자동으로 업데이트 하기 때문에 곧바로 사용해야할 경우가 아니라면 생략해도 무방하다.
예를들어 사용자의 나이를 입력받아 앱에 저장해야 할 필요가 있다고 가정해보자.
defaults.set(30, forKey: "age")
30이라는 정수를 ‘age’라는 키에 저장했다. 이제 ‘age’라는 키값을 이용해 저장한 정보를 불러올 수 있다.
defaults.value(forKey: "age")
이 값은 사용자가 변경하지 않는한 영구적으로 앱에 저장되며 이외에도 여러가지 간단한 정보를 저장할때 UserDefaults 클래스를 사용하면 편리하다. 물론 수천명의 연락처를 저장하는 등 대용량 데이터를 저장하려면 뒤에서 다룰 데이터베이스가 필요하다. 그러나 “닭 잡는데 소 잡는 칼이 필요없다.” 라는 말처럼 간단한 정보를 저장할때는 UserDefaults 클래스로 충분하다.