2010-10-11 26 views
1

J'ai un NSArrayController que j'utilise pour fournir des données à un IKImageBrowserView. Je veux prendre en charge le glisser-déposer depuis IKImageBrowserView vers d'autres applications. Voici la méthode appropriée de mon code:Pourquoi - [NSPasteboard writeObjects:] renvoie NO pour un tableau d'objets 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]; 
} 

Mon application est nouvelle si je cible 10.6+ et selon the documentation, « Sous Mac OS X v10.6 et versions ultérieures, utilisez writeObjects: pour écrire les URL directement le carton à la place. "

J'ai vérifié que les objets que j'essaie d'écrire sont bien des objets NSURL, donc je ne sais pas où le processus est en train de se décomposer ou comment résoudre le problème. Merci d'avance pour votre aide.

Répondre

10

Avez-vous déjà nettoyé le carton? Vous devez le faire, et ainsi devenir le propriétaire du carton, avant de pouvoir écrire des objets dans la table de montage.

+0

Merci, Peter, c'était tout à fait ça, en ajoutant ça à ma barre d'outils techniques à retenir :) – jxpx777

1

Avez-vous vérifié que votre variable pasteboard n'est pas nulle?

+1

N'avait pas avant et c'était une bonne idée, mais hélas, pas de dés. Ce n'est pas nul. :(Similaire: Pourquoi Cocoa ne peut pas avoir des nils comme Ruby? – jxpx777

+0

@ jxpx777 en ce qui concerne whiny nils, je suis tout à fait d'accord.Je trouve incroyable que Cocoa me permette d'effectuer des sélecteurs sur des objets nil sans se plaindre.Comme beaucoup de temps gaspillé –

-1

Les objets à envoyer à - [NSPasteboard writeObjects:] sont-ils supposés être NSPasteboadItems? Vous pouvez définir leur valeur de chaîne sur absoluteString de NSURL et écrire un tableau de NSPasteboadItems.

+0

Voir http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSPasteboard_Class/Reference/Reference.html%23//apple_ref/occ/instm/NSPasteboard/writeObjects:. conformes au protocole 'NSPasteboardWriting' sont acceptables, et les objets NSURL (quand AppKit est présent) se conforment à ce protocole –