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;
}
哇,板* *爲零。但是,什麼會導致板子爲零? – Tim 2010-08-24 23:28:28
很好的問題......也許粘貼板在你的應用程序的其他地方使用粘貼板搞砸了?我不知道。也許你應該提高我的答案但不接受它。 – JWWalker 2010-08-25 02:33:58
我用一個相對空白的項目運行了一些測試,當我使用遠程調試時,它看起來只有零。也許我應該爲我的問題的這個新的實際原因開始一個新的問題。 – Tim 2010-08-25 04:11:40