Я должен добраться, URL всех файлов перетащили/заскочили мое приложение от Средства поиска.
У меня есть приложение Какао, работающее 10.6, который делает это при помощи новых 10.6 API NSPasteboard, которые обрабатывают несколько объектов на области монтажа. Я пытаюсь бэкпортировать это приложение к 10,5. Как я обрабатываю это на 10,5?
Если я делаю что-то как ниже, я только получаю первый URL:
NSArray *pasteTypes = [NSArray arrayWithObjects: NSURLPboardType, nil];
NSString *bestType = [pboard availableTypeFromArray:pasteTypes];
if (bestType != nil) {
NSURL *url = [NSURL URLFromPasteboard:pboard];
}
Темы IKImageKit для программирования
очерчивают способ сделать это так (перефразируя):
NSData *data = [pasteboard dataForType:NSFilenamesPboardType];
NSArray *filenames = [NSPropertyListSerialization
propertyListFromData:data
mutabilityOption:kCFPropertyListImmutable
format:nil
errorDescription:&errorDescription];
Смотрите здесь: Руководство по программированию комплектов изображений: Поддержка перетаскивания
Получить несколько имен файлов легко: (При получении нескольких URL-адресов не с 10,5)
NSFilenamesPboardType
performDragOperation:
сделайте следующее, чтобы получить массив путей к файлам: NSPasteboard* pboard = [sender draggingPasteboard];
NSArray* filenames = [pboard propertyListForType:NSFilenamesPboardType];
Как обрабатывать [несколько объектов на карте] на 10.5?
Попробуйте Pasteboard Manager.
Коварная часть заключается в том, что вы обрабатываете падение, что означает, что вы получаете NSPasteboard, уже созданный для вас, и нет никакого способа конвертировать между объектами NSPasteboard и PasteboardRef
s. Вы должны запросить у NSPasteboard его имя
, затем передать это же имя в PasteboardCreate
, и это может не сработать.