我正在尝试通过阅读plist来设置图像。我正在开发一个使用当前桌面壁纸的应用程序并将其设置为Windows背景图像。文件位于~/Library/Preferences/com.apple.desktop.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]);
一旦我可以获得位于plists字符串中的实际数据,我的计划是将其设置为NSImageView或[window setBackgroundColor:[color]];
方法
提前致谢。
答案 0 :(得分:2)
请注意,桌面图像的某些信息可以通过公共APIS获得,从10.6开始。阅读NSWorkspace
文档,特别是-[NSWorkspace desktopImageOptionsForScreen:]
等文档。
答案 1 :(得分:1)
根据我本地用户帐户的plist,以下内容适合您:
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"];
答案 2 :(得分:0)
plist看起来像这样吗?
<dict>
<key>NewImageFilePath</key>
<string>...</string>
</dict>
如果是这样,该代码应该有效。但我猜测键不在第一个词典的根源?
答案 3 :(得分:0)
我现在一切正常,除了现在显示图像。使用
NSURL *address = [[NSWorkspace sharedWorkspace] desktopImageURLForScreen:[NSScreen mainScreen]];
我能够获得图像的地址。我现在正在尝试设置windows backgroundColor这个图像。谢谢你的帮助。