2012-09-11 2 views
1

J'essaie d'implémenter une simple opération glisser-déposer dans une tableView. Cependant, lorsque je tente de récupérer les données de la table de montage à l'aide readObjectsForClasses, je reçois une exception d'exécution disantnspasteboard readObjectsForClasses explose

« [__NSCFConstantString initWithBytes: longueur: encodage:]: sélecteur non reconnu envoyé à l'instance »

Ceci est mon acceptDrop méthode où le problème se produit. Quelqu'un peut-il s'il vous plaît aider à signaler ce que je fais mal.

(BOOL) tableView: (NSTableView *) view 
    acceptDrop: (id) info 
      row: (NSInteger) row 
dropOperation: (NSTableViewDropOperation) op 
    {  

    NSArray *pBoardClasses = [[NSArray alloc] initWithArray:[NSArray arrayWithObjects:[NSStringPboardType class], [NSDragPboard class], nil]]; 
    NSPasteboard *board =[info draggingPasteboard]; 

    if(![board canReadObjectForClasses:pBoardClasses options:nil]) 
    { 
    NSLog(@"No acceptable data format in pasteboard. Cannot perform this operation!"); 
    return NO; 
    } 

    NSArray * dFromPboard = [board readObjectsForClasses:pBoardClasses options:nil]; 

    } 

Répondre

0

utilisation [NSString class] au lieu de [NSStringPboardType class]

aussi: [NSDragPboard class] ressemble à ce qui ne va pas. Supprimez ceci et testez si cela fonctionne avec [NSString class] seulement.

NSArray *stringObjects = [pboard readObjectsForClasses:@[ [NSString class], [NSAttributedString class] ] options:@{}]; 
    if(stringObjects.count > 0) { 
     NSString *myStr = stringObjects[0]; 
     //… 
    } 
//…