npasteboard readObjectsForClasses взрывается

Я пытаюсь реализовать простую операцию перетаскивания в tableView. Однако, когда я пытаюсь получить данные из монтажного стола с помощью readObjectsForClasses, я получаю исключение времени выполнения, говорящее

"[__NSCFConstantString initWithBytes:length:encoding:]: в экземпляр отправлен нераспознанный селектор"

Это мой метод acceptDrop, где возникает проблема. Может кто-нибудь, пожалуйста, помогите указать, что я делаю неправильно.

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

   }

person halfwaythru    schedule 11.09.2012    source источник


Ответы (1)


используйте [NSString class] вместо [NSStringPboardType class]

также: [NSDragPboard class] похоже, что это не так. Удалите это и проверьте, работает ли это только с [NSString class].

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