2016-12-24 1 views
0

Так что я пытаюсь создать заставку для видеозаписей для macOS 10.12 с помощью NSString для получения пути и NSURL для сохранения пути.NSString pathway всегда возвращает нуль, несмотря на наличие файла, содержащегося в папке

Однако каждый раз, когда я проверить экранную заставку, она падает с этой ошибкой:

Application Specific Information: 
com.apple.preference.desktopscreeneffect v.5.1 (Desktop & Screen Saver) 
Crashing on exception: *** -[NSURL initFileURLWithPath:]: nil string parameter 

Я считаю, что проблема лежит здесь:

// Create the video path then use it. (Problem at the moment: the pathway always returns nil) 
NSString *screenSaverPath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"mp4"]; 
NSURL *screenSaver = [NSURL fileURLWithPath:screenSaverPath]; 

//Obtain the size of the screen. 
NSSize size = [self bounds].size; 

//Draw the video player. 
AVPlayer *video = [AVPlayer playerWithURL:screenSaver]; 

Но я не уверен в том, как я могу решить Эта проблема. Кто-нибудь знает, как вы можете решить эту проблему? Спасибо!

ответ

2

Хранители экрана загружаются в приложение. Таким образом mainBundle - это процесс ScreenSaverEngine, который загружает ваш плагин, а не ваш плагин. Вероятно, вы должны использовать bundleForClass для получения пакета, в котором находится основной класс вашего экрана.

+0

Что вы подразумеваете под «плагином». Вы имеете в виду pathForResource и код Type или что-то еще? – coolmanbat1

+0

Вы сказали, что пишете экранную заставку ...? Это плагины, загруженные системой. – uliwitness

+0

О, я вижу. Да, я очень люблю создавать скринсейверы в xcode. – coolmanbat1

Смежные вопросы