2010-08-24 40 views
0

Le code suivant provient d'un NSTableViewDataSource où j'essaye d'implémenter glisser-déposer.NSPasteboard setString: forType: renvoie NO sous Leopard, fin dans Snow Leopard

Quelqu'un peut-il me dire pourquoi la méthode setString:forTypes: dans le code suivant renvoie NO sous Leopard? Cela fonctionne très bien dans Snow Leopard. J'ai vérifié le "document de programmation de pasteboard pour le document d'héritage de Cocoa" mais je ne peux pas comprendre ce que je fais mal.

- (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard 
{ 
    NSString *str; 
    if ([tableView isEqualTo:databaseView]) { 
     str = [[commander databases] objectAtIndex:[rowIndexes firstIndex]]; 
    } else if ([tableView isEqualTo:favouritesView]) { 
     str = [[commander favourites] objectAtIndex:[rowIndexes firstIndex]]; 
    } 

    if (str != nil) { 
     NSArray *types = [NSArray arrayWithObject:NSStringPboardType]; 
     [pboard declareTypes:types owner:nil]; 
     if ([pboard setString:str forType:NSStringPboardType]) { 
      return YES; 
     } else { 
      [self handleErrorString:[NSString stringWithFormat:@"Error: Couldn't copy '%@' to pasteboard!", str]]; 
     } 
    } 
    return NO; 
} 

Répondre

1

Ceci est une supposition sauvage, mais il faut vérifier les données: que pboard non nul, et que str est vraiment une chaîne.

+0

Wow, pboard * était * nul. Mais qu'est-ce qui ferait que pboard soit nul? – Tim

+0

Bonne question ... peut-être que la table de montage est foirée ailleurs dans votre application qui utilise des tableaux? Je ne sais pas. Peut-être que vous auriez dû mettre ma réponse à la hausse, mais je ne l'ai pas acceptée. – JWWalker

+1

J'ai exécuté quelques tests avec un projet relativement vide et il semble que ce soit seulement zéro quand j'utilise le débogage à distance. Peut-être que je devrais commencer une nouvelle question pour cette nouvelle cause réelle de mon problème. – Tim