반응형

NSUserDefaults 에 UILocalNotification을 저장하는 목적은 fireDate가 초과되지 않은 LocalNotification을 차후에 취소하기 위해서인데요, 기본적으로 NSUserDefault 에 UILocalNotification 객체를 그대로 저장하려고 하면 오류가 발생합니다.
이를 해결하기 위해서는 NSUserDefaults 에 저장하기 전에 약간의 작업을 더 해주어야 합니다.
(아래의 예제에서는 UILocalNotification 형의 notify 변수가 이미 설정되어있다고 가정합니다.)



1. NSUserDefaults 에 UILocalNotification 저장
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:notify];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:<key value>];



2. NSUserDefaults 에 저장된 UILocalNotification 읽기
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:<key value>];
UILocalNotification *notify = [NSKeyedUnarchiver unarchiveObjectWithData:data];

if(notify){ // Local Notification Cancel
        [[UIApplication sharedApplication] cancelLocalNotification:notify];
}













반응형
반응형

아이폰 프로그래밍을 하다보면 빈번히 사용하게 되는것 중의 하나가 NSUserDefaults 일 것입니다.
NSUserDefaults 의 용도는 간단하게 전역 데이터 저장소라고 생각하시면 됩니다.
데이터의 종류는 int / bool / url / object 형으로 거의 모든 데이터를 저장할 수 있습니다.
데이터의 보존 기한은 앱을 삭제하기 전까지는 쭈욱~ 유지됩니다.

그럼 NSUserDefaults 에 데이터를 저장하고, 저장한 데이터를 읽어오는 방법에 대해서 설명하도록 하겠습니다.
(참고로 NSUserDefaults 에 데이터를 저장하기 위해서는 [data, key]의 쌍으로 저장을 해야합니다. key값은 NSString형의 문자열입니다.)



1. NSUserDefaults 에 데이터 저장

 (1) int 값 저장
[[NSUserDefaults standardUserDefaults] setInteger:<int value> forKey:<key value>];


 (2) bool 값 저장
[[NSUserDefaults standardUserDefaults] setBool:<bool value> forKey:<key value>];


 (3) object 저장
[[NSUserDefaults standardUserDefaults] setObject:<object> forKey:<key value>];

 

(4) 저장한 데이터 동기화(적용) 

[[NSUserDefaults standardUserDefaults] synchronize];


 


2. NSUserDefaults 에 저장된 데이터 읽기

 (1) int 값 읽기

int value = [[NSUserDefaults standardUserDefaults] integerForKey:<key value>];


 (2) bool 값 읽기
bool value = [[NSUserDefaults standardUserDefaults] boolForKey:<key value>];


 (3) NSString 값 읽기 (NSString 값 저장은 NSString 자체가 object이기 때문에 setObject를 이용하면 됩니다.)
NSString *value = [[NSUserDefaults standardUserDefaults] stringForKey:<key value>];


 (4) object 읽기
id value = [[NSUserDefaults standardUserDefaults] objectForKey:<key value>];








 









반응형

+ Recent posts