不带“file://”的拖放 URL
Posted
技术标签:
【中文标题】不带“file://”的拖放 URL【英文标题】:Drag&Drop NSURL without "file://" 【发布时间】:2012-07-18 12:05:10 【问题描述】:我正在实现我的拖放方法。我需要当用户在我的应用程序窗口上拖动某些东西时,我可以获得该文件的 URL。 NSURL
需要转换为char
。没关系。但是如何从网址中删除file://
?我当前的代码:
pboard = [sender draggingPasteboard];
NSString *url = [[NSURL URLFromPasteboard:pboard] absoluteString];
input_imageN = strdup([url UTF8String]);
没问题,但它给出了带有file://
前缀的url。我尝试使用
NSURL *fileUrl = [[NSURL URLFromPasteboard:pboard] isFileURL];
NSString *url = [fileUrl absoluteString];
NSLog(@"url: %@", [NSURL URLFromPasteboard:pboard]);
input_imageN = strdup([url UTF8String]);
但它说
Cannot initialize a variable of type 'NSURL *' with an rvalue of type 'BOOL' (aka 'signed char')
在
NSURL *fileUrl = [[NSURL URLFromPasteboard:pboard] isFileURL];
【问题讨论】:
【参考方案1】:要在文件系统的适当表示中以 C 字符串形式从文件 URL 转到路径,您可以:
NSURL *fileURL = [NSURL URLFromPasteboard: pboard];
NSString *filePath = [fileURL path];
char *filesystemRepresentation = [filePath filesystemRepresentation];
这避免了剥离方案只留下路径的假设,或者文件系统肯定很乐意接受 UTF8 编码的路径。
【讨论】:
这应该是正确的答案。使用path
是一种更清洁的方式。【参考方案2】:
url = [url stringByReplacingOccurencesOfString:@"file://" withString:@""];
希望这会有所帮助。干杯!
【讨论】:
没问题。乐意效劳。如果您发现答案有帮助,请考虑接受它,以便其他用户更快地找到解决方案。干杯! 我只是不被允许这样做 4 分钟 :) 错字:stringByReplacingOccurrEncesOfString 而不是 stringByReplacingOccurAncesOfString @Fmessina 谢谢:D,已修复。 试试这个 [self.网址路径];【参考方案3】:@user23743 的回答是正确的。从 ios 7 开始,虽然 NSURL
有自己的 filestSystemRepresentation
方法。
在 Swift 中:
if let fileURL = NSURL(fromPasteboard: pboard)
let representation = fileURL.fileSystemRepresentation
【讨论】:
【参考方案4】:if let fileURL = NSURL(from: pboard)?.filePathURL
对我来说最有效。
【讨论】:
以上是关于不带“file://”的拖放 URL的主要内容,如果未能解决你的问题,请参考以下文章