Question

Je dois obtenir les URL de tous les fichiers glissés / déposé dans mon application à partir du Finder.

J'ai une application Cocoa qui fonctionne sur 10,6 le fait en utilisant les nouvelles API 10.6 NSPasteboard qui gèrent plusieurs éléments sur la table de montage. Je suis en train de rétroporter cette application à 10,5. Comment puis-je gérer cela sur 10,5?

Si je fais quelque chose comme ci-dessous, je ne reçois que la première URL:

    NSArray *pasteTypes = [NSArray arrayWithObjects: NSURLPboardType, nil];
    NSString *bestType = [pboard availableTypeFromArray:pasteTypes]; 
    if (bestType != nil) {
        NSURL *url = [NSURL URLFromPasteboard:pboard];
    }        
Était-ce utile?

La solution

Le IKImageKit programming topics esquisser une façon de le faire comme si (paraphrase):

   NSData *data = [pasteboard dataForType:NSFilenamesPboardType];
   NSArray *filenames = [NSPropertyListSerialization
        propertyListFromData:data
            mutabilityOption:kCFPropertyListImmutable
                      format:nil
            errorDescription:&errorDescription];

Voir ici: image Kit Guide de programmation: Appuyer glisser-déposer

Autres conseils

Obtenir plusieurs noms de fichiers est facile

: (Tout en obtenant plusieurs URL ne sont pas avec 10,5)

  1. Enregistrez votre vue pour NSFilenamesPboardType
  2. Dans performDragOperation: procédez comme suit pour obtenir un tableau de chemins de fichiers:

NSPasteboard* pboard = [sender draggingPasteboard];
NSArray* filenames = [pboard propertyListForType:NSFilenamesPboardType];

Le NSURLPboardType gère une seule URL.

Pour obtenir une liste des fichiers que vous devez créer un NSArray d'un NSFilenamesPboardType.

docs sur le glisser-déposer sont assez bons, même si c'est des choses plus.

  

Comment puis-je gérer [plusieurs éléments sur une table de montage] sur 10,5?

Essayez les Pasteboard Directeur .

La partie la plus délicate est que vous manipulez une baisse, ce qui signifie que vous recevez un NSPasteboard déjà créé pour vous, et il n'y a aucun moyen de convertir entre les objets et NSPasteboard PasteboardRefs. Vous devrez demander au NSPasteboard pour son name, puis passer le même nom à PasteboardCreate, et qui ne fonctionne pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top