Хорошо, у меня настроен NSOutlineView, и я хочу, чтобы он захватывал PDF-файлы, если PDF-файл перетаскивается в NSOutlineView.
Мой первый вопрос, у меня есть следующий код:
[outlineView registerForDraggedTypes:[NSArray arrayWithObjects:NSStringPboardType, NSFilenamesPboardType, nil]];
Во всех яблочных документах и примерах, которые я видел, я также видел нечто вроде MySupportedType, являющегося объектом, зарегистрированным для перетаскивания. Что это значит? Должен ли я изменить код на:
[outlineView registerForDraggedTypes:[NSArray arrayWithObjects:@"pdf", NSStringPboardType, NSFilenamesPboardType, nil]];
В настоящее время он настроен на распознавание перетаскивания, и я даже могу заставить его выдавать URL перетаскиваемого файла после того, как перетаскивание принято, однако это приводит меня ко второму вопросу. Я хочу сохранить копию приложения в формате PDF. Я полагаю, и поправьте меня, если я ошибаюсь, что лучший способ сделать это - извлечь данные из буфера обмена, сохранить их в каком-то постоянном хранилище, и все. (в отличие от использования некоторой команды копирования и буквального копирования файла в директорию приложения.)
Как говорится, я не уверен, как это сделать. У меня есть код:
- (BOOL)outlineView:(NSOutlineView *)ov acceptDrop:(id <NSDraggingInfo>)info item:(id)item childIndex:(NSInteger)childIndex
{
NSPasteboard *pboard = [info draggingPasteboard];
NSURL *fileURL;
if ( [[pboard types] containsObject:NSURLPboardType] ) {
fileURL = [NSURL URLFromPasteboard:pboard];
// Perform operation using the file’s URL
}
NSData *data = [pboard dataForType:@"NSPasteboardTypePDF"];
Но на самом деле это никогда не дает никаких данных. Как я уже говорил, он получает URL, а не данные.
Кто-нибудь есть какие-либо советы о том, как это сделать? Большое спасибо!