2011-02-02 4 views
3

plist를 읽지 못하도록 이미지를 설정하려고합니다. 나는 현재의 바탕 화면 배경 무늬를 사용하는 응용 프로그램에서 Windows 배경 화면으로 설정하고 있습니다. 파일 위치는 ~/Library/Preferences/com.apple.desktop.plist 어떻게 읽습니까? 내가 읽으려고하는 특정 키는 다음과 같습니다.mac에서 plist 읽기

NewImageFilePath 
ImageFilePath 

나는이 코드를 아이폰에서 plist를 읽는 것과 같았지만 작동하지 않았다.

NSString *plistPath = @"~/Library/Preferences/com.apple.desktop.plist"; 
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:plistPath] retain]; 
NSString *item = [plistData objectForKey:@"NewImageFilePath"]; 

NSLog([NSString stringWithFormat:@"%@", item]); 

내 계획은 사전에

감사 NSImageView이나 [window setBackgroundColor:[color]]; 방법으로 설정하는 것입니다 속성 목록 문자열에있는 실제 데이터를 얻을 수 있습니다되면.

+0

왜 그 사전을 유지할 이유가 있습니까? 또한 사전에 데이터가 포함되어 있으므로 해당 변수의 이름을 변경해야합니다. –

답변

2

참고 :

NSString *plistPath = @"~/Library/Preferences/com.apple.desktop.plist"; 
NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:plistPath]; 
NSString *item = [[[plistData objectForKey:@"Background"] objectForKey:@"default"] objectForKey:@"NewImageFilePath"]; 

더 쉬운 솔루션과 쉽게 읽을 수는 사용하는 valueForKeyPath입니다 데스크톱 이미지에 대한 일부 정보는 공개 APIS를 통해 10.6부터 얻을 수 있습니다. NSWorkspace 설명서, 특히 -[NSWorkspace desktopImageOptionsForScreen:] 등을 읽으십시오.

0

plist는 이렇게 생겼습니까?

<dict> 
    <key>NewImageFilePath</key> 
    <string>...</string> 
</dict> 

그렇다면 해당 코드가 작동해야합니다. 하지만 키가 첫 번째 딕트의 근원이 아닌 것 같습니까?

+0

다음과 같이 보입니다. http://cl.ly/4L45 – Frankrockz

+0

Michael은 위의 대답에 올바른 길을 가지고 있습니다. –

1

내 로컬 사용자 계정에 대한 PLIST에 따르면, 다음은 당신을 위해 수행해야합니다

NSString *plistPath = @"~/Library/Preferences/com.apple.desktop.plist"; 
NSDictionary *plistData = [NSDictionary dictionaryWithContentsOfFile:plistPath]; 
NSString *item = [plistData valueForKeyPath:@"Background.default.NewImageFilePath"]; 
+0

작동하지 않는 것으로 나타납니다. (지금 NSWorkspace를 시도해보십시오. – Frankrockz

0

지금 이미지를 표시하는 것 외에는 모든 것이 작동합니다. 사용 중

NSURL *address = [[NSWorkspace sharedWorkspace] desktopImageURLForScreen:[NSScreen mainScreen]]; 

이미지에 주소를 가져올 수있었습니다. 지금은 windows backgroundColor를이 이미지로 설정하려고합니다. 도움을 주셔서 감사합니다.