Невозможно изменить изображение на рабочем столе, поскольку URL не является URL-адресом файла - PullRequest
1 голос
/ 25 марта 2012

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

NSError *anError = nil;
NSString *imageURLString = [[NSBundle mainBundle] pathForResource:@"wallpaper" ofType:@"jpg"];
NSURL *imageURL = [NSURL URLWithString:imageURLString];

[[NSWorkspace sharedWorkspace] setDesktopImageURL:imageURL forScreen:[NSScreen mainScreen] options:nil error:&anError];

, но всегда выдает это исключение в консоли:

Invalid parameter not satisfying: url != nil && [url isFileURL]

Когда я пытаюсь войти - [url isFileURL] он возвращает NO, который я не могу выяснить.

Когда я пытался напечатать описание imageURL, оно напечатало следующее сообщение:

<CFURL 0x100165c50 [0x7fff7f508ea0]>{type = 15, string = /Users/miraaj/Library/Developer/Xcode/DerivedData/DesktopFun-cevkcaebvcfnstgqbulqyibcfvru/Build/Products/Debug/DesktopFun.app/Contents/Resources/wallpaper.jpg, encoding = 134217984, base = (null)}

Может кто-нибудь предложить мнепричина этой проблемы?

1 Ответ

2 голосов
/ 25 марта 2012

Вы используете неправильный метод для создания NSURL. Вы хотите

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"wallpaper" ofType:@"jpg"];
NSURL* imageURL = [NSURL fileURLWithPath:imagePath isDirectory:NO];

Или вы можете сохранить шаг и получить NSURL непосредственно из NSBundle (10.6 и более поздних версий):

NSURL* imageURL = [[NSBundle mainBundle] URLForResource:@"wallpaper" withExtension:@"jpg"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...