gpt4 book ai didi

objective-c - 拖放时可以从粘贴板获取完整路径吗?

转载 作者:行者123 更新时间:2023-12-03 17:30:50 27 4
gpt4 key购买 nike

我支持 IKImageBrowserView 上的拖放操作。在我的拖放目标委托(delegate)中,我接受 NSFilenamesPboardType 拖放。奇怪的是,我得到的文件路径字符串都以“/Users/...”开头,而不是像使用 NSOpenPanel 时得到的“file://localhost/...”一样。当我将它们转换为 NSURL 供 IKImageBrowserView 用于显示图像时,它会感到困惑,因为它只理解以“file://localhost/...”开头的完整路径。我可以破解前缀,就像我在下面的代码片段中所做的那样,但我想知道是否有一种编程方法来获取完整路径?

if ([[pasteboard types] containsObject:NSFilenamesPboardType])
{
NSData* data = [pasteboard dataForType:NSFilenamesPboardType];
if (data)
{
NSString* errorDescription;
NSArray* filenames = [NSPropertyListSerialization
propertyListFromData:data
mutabilityOption:kCFPropertyListImmutable
format:nil
errorDescription:&errorDescription];

for (id filename in filenames)
{
NSURL* url = [NSURL URLWithString:[NSString stringWithFormat:@"file://localhost%@", filename]];

NSLog(@"Adding URL: %@", url);

最佳答案

要从完整路径创建文件 URL,请勿自行添加 file:// 前缀。只需使用

    NSURL* url=[NSURL fileURLWithPath:pathString];

参见the documentation .

从操作系统的角度来看,

   /Users/myname/file.txt

是系统中文件的完整路径。在还允许各种网络访问的更高级别的 API 中,通过放置 file:// 协议(protocol)来区分本地文件。这些 pboard API 早于 API 中 URL 的普遍使用,这就是为什么它以完整路径而不是文件 URL 的形式返回路径。

关于objective-c - 拖放时可以从粘贴板获取完整路径吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362484/

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