Mac에는 윈도우 운영체제와 같은 레지스트리가 없습니다. 대신 NSUserdefaults class를 이용하면 각 app들의 환경설정 값들을 운영체제에 저장할 수 있습니다.
저장하는 방법은 NSDictionary를 이용하는 방법과 유사합니다.
[[NSUserDefaults standardUserDefaults] setObject:@"ko" forKey:@"Language"]; [[NSUserDefaults standardUserDefaults] setObject:@"kr" forKey:@"Country"]; [[NSUserDefaults standardUserDefaults] synchronize]; |
언어와 국가를 환경설정에 저장하는 Objective C코드입니다. 인스톨러나 세팅쪽에서 환경 설정을 해 두면 이후에 해당 값을 참조하여 UI를 바꾸기 위해 사용할 수 있습니다.
synchronize 를 해야 그 값이 그 시점에 반영되는 것으로 보입니다.
위의 문장이 실행되면, 현재의 프로젝트의 도메인 값을 가진 plist가 /Library/Preferences 하위에 serialize된 것을 확인할 수 있습니다.
(숨김파일을 확인하시면 /Library/Preferences 하위에 .GlobalPreferences.plist 파일도 같이 있는데, 여기 내부에도 같이 저장되는 것으로 보입니다.)
plist파일을 열어보면 @"Language"와 @"Country" 에 각각 @"ko", @"kr"이 입력되어 있을 겁니다.
반대로 읽어 들이는 방법도 NSDictionary와 유사합니다.
NSString* language = [[NSUserDefaults standardUserDefaults] stringForKey:@"Language"]; NSLog(@"language = %@", language); |
기본적으로 프로젝트의 도메인 값을 가진 plist에서 읽어오도록 되어 있으나 파일이 없을 경우에도 .GlobalPreferences.plist에 값이 남아 있다면 읽어 올 수 있으니 주의해야 합니다.
다양한 Getter를 제공하니 저장한 타입에 맞게 사용하면 됩니다.
- (NSString *)stringForKey:(NSString *)defaultName; - (NSArray *)arrayForKey:(NSString *)defaultName; - (NSDictionary *)dictionaryForKey:(NSString *)defaultName; - (NSData *)dataForKey:(NSString *)defaultName; - (NSArray *)stringArrayForKey:(NSString *)defaultName; - (NSInteger)integerForKey:(NSString *)defaultName; - (float)floatForKey:(NSString *)defaultName; - (double)doubleForKey:(NSString *)defaultName; - (BOOL)boolForKey:(NSString *)defaultName; - (NSURL *)URLForKey:(NSString *)defaultName; |
터미널의 command 에서도 여기에 해당하는 값을 바꿀 수 있는 방법을 제공합니다.
예를 들면 Finder에서 숨김파일을 표시하기 위해서 터미널에서 다음과 같이 입력합니다.
defaults write com.apple.Finder AppleShowAllFiles YES |
Finder에서 해당 값이 설정된 것을 확인하려면 다시 실행해야 합니다.
Finder의 환경설정 값도 /Library/Preferences 하위에 com.apple.Finder.plist 라는 곳에 저장되어 있나봅니다. 그중 AppleShowAllFiles 키 값은 숨김 파일을 포함한 모든 파일을 보여줄 지 말지를 설정하는 값으로 보이며, 위의 명령을 실행해서 YES로 세팅되면, Finder에서 모든 파일을 보여주게 되는 것입니다.
defaults write domain { key 'value'} |
다시 이전처럼 숨김 상태로 되돌릴려면 값을 NO로 세팅해주면 됩니다.
defaults write com.apple.Finder AppleShowAllFiles NO
반대로 read를 사용하면 읽을 수 있습니다.
defaults read com.apple.Finder AppleShowAllFiles |
특정 키값이 아닌 전체 키에 대한 값을 다 읽으려면 key를 입력하지 않으면 됩니다.
defaults read com.apple.Finder |
Copyright © 2015 by ZAMCOM, All rights reserved.
'Mac&iOS' 카테고리의 다른 글
Apple 오픈 소스 사이트 (0) | 2015.02.16 |
---|---|
번들에 포함된 html 파일을 safari로 열기 (0) | 2015.02.16 |
NSDisplayOperationStack crash문제 (0) | 2015.02.11 |
unzip command를 이용한 압축 해제 (0) | 2015.02.08 |
Mac OS 버전 체크 (0) | 2015.02.08 |