Ach*_*ang 8 macos cocoa sandbox objective-c nspasteboard
我处理了从浏览器视图到自定义视图的拖动操作.它在雪地上工作得很好,但在带有沙箱的Mountain Lion中却没有.
in browser view:
NSMutableArray* urls = [[[NSMutableArray alloc] init] autorelease];
..............put some NSUrl to urls array....................
[pasteboard writeObjects:[NSArray arrayWithArray:urls]];
in my receive custom view:
NSArray* pasteboardItems = [pasteboard readObjectsForClasses:[NSArray arrayWithObject:[NSString class]] options:nil];
NSArray* pasteboardItems2 = [pasteboard readObjectsForClasses:[NSArray arrayWithObject:[NSURL class]] options:nil];
NSArray* pasteboardItems3 = [pasteboard readObjectsForClasses:[NSArray arrayWithObject:[NSImage class]] options:nil];
NSLog(@"%@",pasteboardItems);
NSLog(@"%@",pasteboardItems2);
NSLog(@"%@",pasteboardItems3);
my log is:
2012-08-09 18:33:43.886 iCollage[6885:303] __CFPasteboardIssueSandboxExtensionForPath: error for [/Users/xxxx/Library/Containers/xxxxxxxxxxxx/Data/Downloads/1343902069.jpg]
2012-08-09 18:33:44.546 iCollage[6885:303] ( "file://localhost/Users/xxx/Library/Containers/xxxxxxxx/Data/Downloads/1343902069.jpg")
2012-08-09 18:33:44.547 iCollage[6885:303] ( "file://localhost/Users/xxxxx/Library/Containers/xxxxxx/Data/Downloads/1343902069.jpg")
2012-08-09 18:33:44.547 iCollage[6885:303] ()
Run Code Online (Sandbox Code Playgroud)
我的问题是:
1.如何解决这个错误__CFPasteboardIssueSandboxExtensionForPath;我参考文档并没有发现任何关于那个.我有权获得访问该文件的权限!谷歌说,可能是"startAccessingSecurityScopedResource"会帮助我,然后我尝试失败
2.为什么pasteboardItems2有价值?我只写了粘贴板但不是字符串.我很反感我可以从NSString类型和NSUrl类型获取url!(我尝试从iFinder拖动文件,网址只存在于pasteboardItems中,但不存在于pasteboardItems2中.)有人知道为什么吗?我认为当有人帮助我解决这个问题时,第一个问题会自动解决.
你的pasteboardItems读取了NSString类型的对象,但是你拖动了一个文件(带有jpg扩展名),你应该在你的init方法中注册NSString类型:
[self registerForDraggedTypes:[NSArray arrayWithObject:NSPasteboardTypeString]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1640 次 |
| 最近记录: |