我正在实施我的拖放方法。我需要当用户在我的应用程序窗口中拖动某些内容时,我可以获取该文件URL。 NSURL
需要转换为char
。没关系。但是如何从网址中删除file://
?我目前的代码:
pboard = [sender draggingPasteboard];
NSString *url = [[NSURL URLFromPasteboard:pboard] absoluteString];
input_imageN = strdup([url UTF8String]);
没关系,但它为网址提供了file://
前缀。我尝试使用
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];
答案 0 :(得分:15)
要在文件系统的相应表示形式中将文件URL作为C字符串转到路径,您可以执行以下操作:
NSURL *fileURL = [NSURL URLFromPasteboard: pboard];
NSString *filePath = [fileURL path];
char *filesystemRepresentation = [filePath filesystemRepresentation];
这避免了剥离方案的假设只留下了路径,或者文件系统肯定很乐意接受UTF8编码的路径。
答案 1 :(得分:4)
url = [url stringByReplacingOccurencesOfString:@"file://" withString:@""];
希望这会有所帮助。干杯!
答案 2 :(得分:1)
@ user23743的回答是正确的。由于iOS 7虽然NSURL
有自己的filestSystemRepresentation
方法。
在斯威夫特:
if let fileURL = NSURL(fromPasteboard: pboard) {
let representation = fileURL.fileSystemRepresentation
}
答案 3 :(得分:1)
if let fileURL = NSURL(from: pboard)?.filePathURL {
}
对我来说最有效。