Чтение плиста на Mac - PullRequest
       0

Чтение плиста на Mac

3 голосов
/ 02 февраля 2011

Я пытаюсь установить изображение из чтения plist. Я работаю над приложением, которое использует текущие обои для рабочего стола и устанавливает его в качестве фонового изображения Windows. Файлы расположены ~/Library/Preferences/com.apple.desktop.plist Как мне прочитать ключ от него? Вот конкретные ключи, которые я пытаюсь прочитать;

NewImageFilePath
ImageFilePath

Я пробовал этот код, который похож на чтение листка на iPhone, но он не работал.

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]]; метод

Заранее спасибо.

Ответы [ 4 ]

2 голосов
/ 02 февраля 2011

Обратите внимание, что некоторую информацию об изображениях на рабочем столе можно получить через общедоступную APIS, начиная с 10.6. Прочитайте NSWorkspace документацию, в частности -[NSWorkspace desktopImageOptionsForScreen:] и т. П.

1 голос
/ 02 февраля 2011

Согласно списку для моей локальной учетной записи, следующее должно сделать для вас:

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 голосов
/ 02 февраля 2011

У меня все работает, кроме отображения изображения сейчас. Использование

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

Мне удалось получить адрес изображения. Я сейчас пытаюсь установить для Windows backgroundColor это изображение. Спасибо за вашу помощь здесь.

0 голосов
/ 02 февраля 2011

Плист выглядит так?

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

Если так, то этот код должен работать.Но я предполагаю, что ключи не в корне первого диктата?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...