NSPasteboard setString: forType: возвращает NO под Leopard, отлично в Snow Leopard - PullRequest
0 голосов
/ 24 августа 2010

Следующий код взят из NSTableViewDataSource, где я пытаюсь повлиять на перетаскивание.

Может кто-нибудь сказать мне, почему метод setString:forTypes: в следующем коде возвращает NO в Leopard?В Snow Leopard работает отлично.Я проверил унаследованный документ « Темы программирования для Картона », но не могу понять, что я делаю неправильно.

- (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 Ответ

1 голос
/ 24 августа 2010

Это дикое предположение, но проверьте данные: pboard не ноль и str действительно строка

...