首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nspasteboard readObjectsForClasses爆炸

nspasteboard readObjectsForClasses爆炸
EN

Stack Overflow用户
提问于 2012-09-12 05:24:28
回答 1查看 420关注 0票数 1

我正在尝试在tableView中实现一个简单的拖放操作。但是,当我尝试使用readObjectsForClasses从粘贴板中检索数据时,我得到一个运行时异常

"__NSCFConstantString initWithBytes:length:encoding::无法识别的选择器发送到实例“

这是我的acceptDrop方法中出现问题的地方。有人能帮我指出我做错了什么吗?

代码语言:javascript
复制
  (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];

   }
EN

回答 1

Stack Overflow用户

发布于 2013-03-02 02:20:08

不使用[NSString class] [NSStringPboardType class],而使用

另外:[NSDragPboard class]看起来是不正确的。删除它并测试它是否只与[NSString class]一起工作。

代码语言:javascript
复制
NSArray *stringObjects = [pboard readObjectsForClasses:@[ [NSString class], [NSAttributedString class] ] options:@{}];
    if(stringObjects.count > 0) {
        NSString *myStr = stringObjects[0];
        //…
    }
//…
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12378138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档