Bucket Place/IOS Swift

[Swift] NSUserDefaults를 이용하여 어플리케이션 정보를 저장하자.

Cloud Travel 2015. 5. 31. 13:50

이 글은 본 블러그(destiny738,tistory.com)의 관리자인 Cloud Travel이 작성하였으며, 이후 이익창출에 사용될 수도 있는 글입니다. 본 글의 저작권 역시 본 블러그의 관리자가 가지고 있습니다. 본 글을 무단 복제, 사용, 인용, 변경 등은 사전에 블러그 관리자에게 문의 바랍니다. 이를 어길 경우 법적제제를 받거나 형사고발을 당할 수 있으니 주의하시기 바랍니다. Contact : create738@bucketplace.net / create738@naver.com


1. 여는글


 요즘 개발일정에 박차를 가하고 있어서 그닦 포스팅을 하지 못하였습니다. 오늘은 시간을 내서 쭉 최대한 Swift에 대해서 정리해보려고 합니다. 황금같은 일요일인데.. 오늘 안하면 또 주중에는 개발일정에 미뤄질것 같아서 마음먹고 정리를 하려고합니다. 그냥 머릿속에 생각나는 기능부터 작성을 시작하려고 합니다. 


 오늘 처음 알아볼 것은 NSUserDefaullts입니다. 안드로이드의 SharedPreference와 같은 기능을 하고 사용법 또한 쉽기 때문에 짧게 이야기가 끝날 것 같습니다. 



2. NSUserDefaults


 그럼 바로 NSUserDefaults에 대해서 이야기해보도록 합시다. NSUserDefaults는 간단한 데이터를 저장하는 하나의 클래스라고 생각하면 됩니다. NSUserDefaults는 앱이 시작, 재시작 그리고 업데이트가 되어도 저장된 값을 유지합니다. NSUserDefaults는 사용자에게 한번 물어보고 왠만해서는 다시 물어볼일이 없는 데이터를 저장합니다. 보통 사용자의 정보나 인터넷에서 쿠키에서 관리하는 값등을 여기서 관리한다고 보면됩니다. 


 NSUserDefaults는 다양한 데이터형식의 데이터를 저장할 수 있도록 도와줍니다.

 - NSString     

 - NSNumber  

 - NSDate 

 - NSArray

 - NSDictionary

 - NSData 



3. 사용하기

 

 1) NSUserDefaults 클래스를 참조하기

       NSUserDefaults에 값을 작성하거나 가져오기 위해서는 NSUserDefaults 클래스를 참조해와야 합니다.

let userDefaults = NSUserDefaults.standardUserDefaults()


 2) 데이터를 저장하기

 NSUserDefaults는 key-value형식을 취합니다. 위에서 참조한 userDefaults에 setValue함수를 호출하여 값을 저장합니다. 

예를들어 현재 사용자의 관리번호와 이름을 저장하는 방식은 아래와 같습니다.

userDefaluts.setValue(1, forKey: "id")
userDefaults.setValue("CloudTravel", forKey: "nickname" )

       같은 Key값에 다른 값을 저장하면 기존의 값에 덮어쓰기를 합니다.


 3) 데이터를 가져오기

 위에서 저장한 값을 가져오는 방법은 다음과 같습니다. 위에서 참조한 userDefaults에 [Type]ForKey 함수를 불러주면 됩니다. 예를들어 String값을 가져오려면 stringForKey함수를 Int값을 가져오려면 integerForKey함수를 호출하면 됩니다.


 키 값이 비어있을 경우가 있을수도 있기 때문에 값이 존재유무도 함께 확인해주는 것이 좋습니다. 예를들어 저장된 nickname값을 가져오기 위해서는...

if let userNickname = userDefaults.stringForKey("nickname") {
    // Do Anything
} else {
    NSLog("Error. nickname is not saved in userDefaults")
    // Do Anything
}



4. 주의점


 NSUserDefaults를 사용할때는 크게 2가지의 주의점이 있다.


 1) 위에서 밝혔듯이 NSUserDefaults는 간단한 데이터를 저장하는 곳이다. 너무 큰 데이터를 저장하면 어플리케이션 자체가 무거워지고 로드할때 시간이 오래걸릴 수가 있다. 그렇기 때문에 너무 큰 데이터를 저장하는 것은 피해야 한다.


 2) NSUserDefaults는 있는 그대로의 데이터를 저장한다. 그렇기 때문에 로그인 Key(비밀번호)값 등은 저장하면 누구나 다 볼 수 있는 위험한 상태에 빠지게 된다.  이를 방지하기 위해서는 iOS에서 권장하는 Keychain(암호화)을 사용해야 한다. 하지만, Keychain은 현재 Swift에서는 직접 구현해서 사용해야한다. Swift에서 사용할 수 있는 잘 작성된 Keychain은 이 링크를 참조하길 바란다.



5. 마치는글


 NSUserDefaults는 사용하기에 따라서 매우 좋은 역할을 할 수 있다. 사용자의 행태(실행횟수, 처음 시작하는가?)를 기록하여 어느 순간에만 값을 보여주는 등 다양한 곳에서 사용이 가능하다. 하지만, 주의점에서 말했듯이 비밀스러운 데이터, 큰 데이터는 다른 방법을 생각해서 저장하길 바란다.