如何在Mac OS X 10.5中处理来自Finder的多个文件拖放?

rob*_*bor 9 macos cocoa finder drag-and-drop nspasteboard

我需要从Finder中将所有文件的URL拖放到我的应用程序中.

我有一个运行在10.6上的Cocoa应用程序通过使用新的10.6 NSPasteboard API来处理粘贴板上的多个项目.我正在尝试将此应用程序向后移植到10.5.我如何在10.5上处理这个问题?

如果我执行下面的操作,我只会获得第一个网址:

    NSArray *pasteTypes = [NSArray arrayWithObjects: NSURLPboardType, nil];
    NSString *bestType = [pboard availableTypeFromArray:pasteTypes]; 
    if (bestType != nil) {
        NSURL *url = [NSURL URLFromPasteboard:pboard];
    }        
Run Code Online (Sandbox Code Playgroud)

Tho*_*ing 10

获取多个文件名很简单:(虽然获取多个URL不是 10.5)

  1. 注册你的观点 NSFilenamesPboardType
  2. performDragOperation:执行以下操作以获取文件路径数组:

NSPasteboard* pboard = [sender draggingPasteboard];
NSArray* filenames = [pboard propertyListForType:NSFilenamesPboardType];
Run Code Online (Sandbox Code Playgroud)


cat*_*sby 6

IKImageKit programming topics大纲的方式来做到这一点,像这样(转述):

   NSData *data = [pasteboard dataForType:NSFilenamesPboardType];
   NSArray *filenames = [NSPropertyListSerialization
        propertyListFromData:data
            mutabilityOption:kCFPropertyListImmutable
                      format:nil
            errorDescription:&errorDescription];
Run Code Online (Sandbox Code Playgroud)

请参阅此处:图像套件编程指南:支持拖放