我正在尝试在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];
}发布于 2013-03-02 02:20:08
不使用[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];
//…
}
//…https://stackoverflow.com/questions/12378138
复制相似问题