2011-02-16 2 views
1

도트의 색을 저장하여 응용 프로그램을 열고 닫을 때 마지막으로 사용자가 설정 한 색을 어떻게 저장합니까?NSUserDefaults에서 Objective-C save NSColor

어떤 사람이 내게 NSUserDefaults을 사용하는 방법과 어떤 방법으로 NSUserDefaults을 선언 할 수 있습니까? 튜토리얼

NSData *data = [NSArchiver archivedDataWithRootObject:color]; 
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MyColor"]; 

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyColor"]; 
NSColor *color = [NSUnarchiver unarchiveObjectWithData:data]; 

링크 내가 다음 :

지금까지 나는이 가지고 http://www.mactech.com/articles/mactech/Vol.25/25.04/2504RoadtoCode/index.html

+0

당신이 무엇을 요구 불분명하다. 위의 코드는 멋지게 보입니다 (보관하기 전에 (NSColor *)에 캐스트를 추가해야 함을 제외하고). 정확히 무엇을 찾고 있니? – theChrisKent

+0

컬러 우물로 제어되는 색상의 원이 표시됩니다. 원하는 것은 컬러 웰을 선택하고 새 색상을 선택하면 해당 새 색상을 저장하고 해당 색상으로 원을 설정하고 싶습니다. 그런 다음 앱이 다시 열리면 원의 색상을 저장된 색상으로 설정하려고합니다. – Sami

답변

5

이것은 내가 무엇을 사용 :

- (NSColor *)colorForKey:(NSString *)key 
{ 
    NSData *data; 
    NSColor *color; 

    data = [[NSUserDefaults standardUserDefaults] objectForKey:key]; 
    color= [NSUnarchiver unarchiveObjectWithData:data]; 
    if(! [color isKindOfClass:[NSColor class]]) 
    { 
     color = nil; 
    } 

    return color; 
    } 

- (void)setColor:(NSColor *)color forKey:(NSString *)key 
{ 
    NSData *data = [NSArchiver archivedDataWithRootObject:color]; 
    [[NSUserDefaults standardUserDefaults] setObject:data forKey:key]; 

    [BFChatWindow refresh]; 
} 
+0

문제는 (사용하는 것처럼) 일으키는 드보락이 아니라 코드 서식의 공백 대신 탭입니다. – Abizern

+0

@Abizern 붙여 넣기를 복사하면 복사가되지 않고 dvorak 및 스택 오버플로의 문제가 발생합니다. –

+0

그것은 나를 위해 잘 작동하기 때문에 이상합니다. – Abizern