2011-02-02 15 views
3

私はplistを読むことからイメージを設定しようとしています。私は、現在のデスクトップの壁紙を使用し、それをWindowsの背景画像として設定するアプリケーションに取り組んでいます。ファイルがあります~/Library/Preferences/com.apple.desktop.plist どのようにしてそこからキーを読みますか?私が読もうとしている特定のキーは次のとおりです。マックでplistを読む

NewImageFilePath 
ImageFilePath 

私はこのコードを試しましたが、これはiPhoneの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

注意デスクトップイメージに関するいくつかの情報は、公のAPIS(10.6以降)から入手できます。 NSWorkspaceのマニュアル、特に-[NSWorkspace desktopImageOptionsForScreen:]などをお読みください。

0

plistはこのように見えますか?

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

もしそうなら、そのコードは機能します。しかし、私はキーが最初のdictのルートにないと推測していますか?次はあなたのために行う必要があり、私のローカルユーザアカウントのplistのによると

+0

これは次のように見えます。http://cl.ly/4L45 – Frankrockz

+0

マイケルは上記の答えに正しい道を持っています。 –

1

、:

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

簡単に解決し、読みやすく、valueForKeyPathを使用することです:

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に設定しようとしています。ここであなたの助けをありがとう。