gpt4 book ai didi

cocoa - 获取 NSPasteboardTypeFileURL 的 UTI

转载 作者:行者123 更新时间:2023-12-03 16:20:04 24 4
gpt4 key购买 nike

NSFilenamesPboardType 在 10.14 中已弃用,建议使用 NSPasteboardTypeFileURL。这给了我文件名

file:///.file/id=6571367.12885025918

并且 NSWorkspace 无法从中获取 UTI。

如何从NSPasteboardTypeFileURL获取UTI?

旧代码:

- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
NSDragOperation sourceDragMask = [sender draggingSourceOperationMask];
NSDragOperation resultingDragMask = NSDragOperationNone;
NSPasteboard *pboard = [sender draggingPasteboard];

if ([[pboard types] containsObject:NSFilenamesPboardType]) {
NSArray <NSString *>*list = [pboard propertyListForType:NSFilenamesPboardType];
NSString *firstItem = [list objectAtIndexedSubscript:0];
NSError *error;
NSString *UTI = [[NSWorkspace sharedWorkspace] typeOfFile:firstItem error:&error];
if (!error) {
if ([[NSImage imageTypes] containsObject:UTI]) {
resultingDragMask = NSDragOperationCopy;
}
}

} else if ([[pboard types] containsObject:NSPasteboardTypeTIFF]) {
resultingDragMask = NSDragOperationCopy;
}

if (sourceDragMask & NSDragOperationCopy && resultingDragMask & NSDragOperationCopy) {
return NSDragOperationCopy;
}
return NSDragOperationNone;
}

使用 NSPasteboardTypeFileURL 我收到错误,指出文件不存在。从粘贴板拖动:

Printing description of error: Error Domain=NSCocoaErrorDomain Code=260 "The file “id=6571367.12885025918” couldn’t be opened because there is no such file." UserInfo={NSURL=file:/.file/id=6571367.12885025918 -- file:///Users/xxx/Library/Containers/com.xxx.imageviewfix/Data/, NSFilePath=/Users/xxx/Library/Containers/com.xxx.imageviewfix/Data/file:/.file/id=6571367.12885025918, NSUnderlyingError=0x600000c70d80 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}

最佳答案

我迟到了这个问题,但我发现这个有效:

  NSArray<Class> *classes = @[[NSURL class]];
NSDictionary *options = @{};
NSArray<NSURL*> *files = [pboard readObjectsForClasses:classes options:options];

for (NSURL *url in files)
{
NSString *str = [url path];

// TODO: do something with str.
}

与其他答案不同,使用此方法可以删除多个文件。

关于cocoa - 获取 NSPasteboardTypeFileURL 的 UTI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com