노블의 개발이야기

[iOS] NSUserDefaults 본문

iOS

[iOS] NSUserDefaults

더플러스 2015. 4. 17. 18:16

NSUserDefaults 사용하기


NSUserDefaults 클래스는 공통으로 사용되는 Default Property를 관리한다.

CoreData, SQLite, File 보다 간단하게 사용가능하다.


저장 가능한 클래스 타입은 NSData, NSString, NSNumber, NSDate, NSArray, NSDictionary 만을 지원한다.

다른 타입의 클래스 인스턴스를 저장하기 위해서는 NSKeyedArchive, NSKeyedUnarchive를 이용한 Serialization(직렬화) 과정을 거쳐야한다.


Load


+ (id)loadFromUserDefaults:(id)key {

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    id returnVal = nil;

    if (userDefaults && key) {

        returnVal = [userDefaults objectForKey:key];

    }

    return returnVal;

}


Save


+ (BOOL)saveToUserDefaults:(id)object forKey:(id)key {

    BOOL returnVal = NO;

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

    @synchronized(userDefaults) {

        if (userDefaults && key && object) {

            [userDefaults setObject:object forKey:key];

        } else {

            [userDefaults removeObjectForKey:key];

        }

        returnVal = [userDefaults synchronize];

    }

    return returnVal;

}


위 코드는 Thread Safe 한 코드를 구현해 두었는데 굳이 그럴 필요없이 간단히 

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

인스턴스를 받아 NSDictionary 와 동일하게 사용하면 된다.

저장이 필요할 경우 [userDefaults synchronize]를 호출하면 된다.


NSUserDefaults 는 어플의 업데이트와 상관없이 설치되면 삭제될 때까지 유지된다.


[참고]

iPhone NSUserDefaults 사용하기

[iOS] NSUserDefaults 사용하기 [가벼운 데이터 저장하기]


Comments