2010-08-24 45 views
0

以下代碼來自NSTableViewDataSource,我試圖使用拖放操作。NSPasteboard setString:forType:在Leopard下返回NO,在Snow Leopard中罰款

有人能告訴我爲什麼在以下代碼中的setString:forTypes:方法在Leopard下返回NO?它在Snow Leopard中運行良好。我檢查了「Cocoa的粘貼板編程主題」遺留文檔,但我無法弄清楚我做錯了什麼。

- (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; 
} 

回答

1

這是胡亂猜測,但檢查的數據:即pboard不爲零,而且str確實是一個字符串。

+0

哇,板* *爲零。但是,什麼會導致板子爲零? – Tim 2010-08-24 23:28:28

+0

很好的問題......也許粘貼板在你的應用程序的其他地方使用粘貼板搞砸了?我不知道。也許你應該提高我的答案但不接受它。 – JWWalker 2010-08-25 02:33:58

+1

我用一個相對空白的項目運行了一些測試,當我使用遠程調試時,它看起來只有零。也許我應該爲我的問題的這個新的實際原因開始一個新的問題。 – Tim 2010-08-25 04:11:40