2010-10-11 3 views
1

У меня есть NSArrayController, который я использую для предоставления данных в IKImageBrowserView. Я хочу поддерживать перетаскивание из IKImageBrowserView в другие приложения. Вот соответствующий метод из моего кода:Почему - [NSPasteboard writeObjects:] возвращает NO для массива объектов NSURL?

- (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboard{ 
    NSArray *items = [[resultsArrayController arrangedObjects] objectsAtIndexes:itemIndexes]; 
    if(![pasteboard writeObjects:items]){ 
     return 0; 
    } 
    return [items count]; 
} 

Мое приложение является новым, так что я нацеливание 10.6+ и в соответствии с the documentation, «На Mac OS X 10.6 и более поздних версиях использование writeObjects: писать URL-адреса непосредственно вместо картона. "

Я проверял, что объекты, которые я пытаюсь написать, действительно являются объектами NSURL, поэтому я не уверен, где происходит процесс, или как продолжить устранение проблемы. Заранее благодарю за любую помощь.

ответ

10

Вы еще не очистили картона? Вам нужно это сделать и тем самым стать владельцем картона, прежде чем вы сможете писать объекты в картон.

+0

Спасибо, Питер. Это было именно так. Добавляем это к моей панели инструментов, чтобы запомнить. :) – jxpx777

1

Вы подтвердили, что переменная pasteboard не ноль?

+1

Не было раньше, и это была хорошая мысль, но, увы, нет кубиков. Это не ноль. :(Связано: Почему Какао не имеет нищих нитей, таких как Ruby? – jxpx777

+0

@ jxpx777 относительно пьяных нил, я полностью согласен. Мне кажется удивительным, что Cocoa с радостью разрешит мне селекторам на нулевых объектах, не жалуясь. Так много времени пропало. –

-1

Являются ли объекты, которые должны быть отправлены - [NSPasteboard writeObjects:] должны быть NSPasteboadItems? Вы можете установить их строковое значение в absoluteString NSURL и написать массив из NSPasteboadItems.

+0

См. Http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSPasteboard_Class/Reference/Reference.html%23//apple_ref/occ/instm/NSPasteboard/writeObjects: любые объекты которые соответствуют протоколу «NSPasteboardWriting», приемлемы, а объекты NSURL (когда AppKit присутствует) соответствуют этому протоколу. –

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