- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 SO 上看到了很多关于 NSURL
和 NSString
之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString];
或 NSString *path = [myURL path];
。 这些方法之间的实际区别是什么? 是否某个时候应该使用其中一种而不是另一种?我尝试查阅Apple Docs ,但我发现它没什么帮助。
我习惯于仅在有关网站和其他有关在不同计算机之间发送信息的主题的讨论中提及 URL,而在仅处理单台计算机上的文件结构时从未提及 URL。也许这就是我的一些困惑的来源,因为 NSURL
似乎是访问文件的首选方式,无论该文件是否存在于网络上或本地设备上。或者也许这是一个完全不相关的话题。我什至不确定。
最佳答案
What is the actual difference between these methods?
让我们分析一下这 6 行代码 - 3 行用于本地,3 行用于 http URL - 并稍微尝试一下它们。
让我们使用 file://
方案创建一个 NSURL
。如果您问自己为什么在 file:
之后有 3 个 /
,您应该记住一个方案存在完整的 URL(file://
和绝对或相对路径(您可以在 RFC 1808 on page 3 中找到有关创建 URL 的更多信息)。我们使用以 /
开头的绝对路径,以便我们以 ///
.
NSURL *aLocalURL = [NSURL URLWithString:@"file:///Users/dennis/Desktop/"];
NSLog(@"absolute string: %@", aLocalURL.absoluteString);
NSLog(@"path: %@", aLocalURL.path);
输出:
absolute string: file:///Users/dennis/Desktop/
path: /Users/dennis/Desktop
因此我们看到 absoluteString
仍然知道其方案,而 path
不再拥有此信息。
注意: path
是一个文件(目录)URL,如 docs状态,尾部斜杠被删除。
现在让我们看一下远程 URL。大多数人都比较熟悉这些类型的 URL。我们使用与本地 URL 相同的过程来创建它。我们的方案现在是 http://
,我们的 path
是 www.apple.com/
。
NSURL *anHTTPURL = [NSURL URLWithString:@"http://www.apple.com/"];
NSLog(@"absolute string: %@", anHTTPURL.absoluteString);
NSLog(@"path: %@", anHTTPURL.path);
输出:
absolute string: http://www.apple.com/
path: /
我们再次看到绝对字符串仍然知道其方案,但 path
现在是 /
。因此,在使用远程 URL 时,path
似乎不是一种合适的方式。
但是,当我们有像 http://www.apple.com/index.html
这样的 URL
时,我们会得到
absolute string: http://www.apple.com/index.html
path: /index.html
阅读文档也有帮助:
Per RFC 3986, the leading slash after the authority (host name and port) portion is treated as part of the path.
因此,path
是从 authority
之后的斜杠开始(包括)的所有内容,在我们的例子中是 www.apple.com
.
Is there a time when one should be used over the other?
来自docs :(方法:路径
)
If this URL object contains a file URL (as determined with isFileURL), the return value of this method is suitable for input into methods of NSFileManager or NSPathUtilities.
在我看来,这句话清楚表明,当您使用 NSFileManager
或 NSPathUtilities
时,应该使用 path
.
当您使用远程 URL 时,您(通常)使用 absoluteString
,否则结果不是您(通常)想要的。
当您使用本地 URL 时,请使用路径
。
来源:
http://www.ietf.org/rfc/rfc1808.txt
http://www.ietf.org/rfc/rfc3986.txt
NSURL Class Reference
关于NSURL 路径与绝对字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35856886/
方法 -isFileReferenceURL 是在 NSURL 类上定义的,但我不知道这个方法是什么。我认为这决定了 URL 是否指向实际文件,但事实并非如此。即使文件存在,它也会返回NO。手册上说只
给定一个本地 URL 地址,例如 index.html 现在我需要使用UIWebView在iPad中加载它。我按照以下步骤操作: 创建 NSURL NSURL *url = [NSURL fileUR
我正在尝试将 NSString(文档目录中文件的路径)转换为 NSURL,但 NSURL 始终为空。这是我的代码: NSURL *urlToPDF = [NSURL URLWithString:app
我有一个将属性定义为 NSURL 的对象: @interface fcpElement : NSObject @property (copy) NSString* elementName; @prop
我正在尝试使用 swift 和 firebase 构建聊天应用程序并收到此错误:下面是代码:我仍然不明白哪里出了问题!!我也在使用 JSQMessageViewController。 func sen
我尝试将 deviceToken 附加到 webView loadRequest 之前的 URL,以便我可以使用 GET 值PHP 脚本。我的问题是,保存 deviceToken 值的函数 didFa
我有 2 个 [NSURL] 数组,它们具有相同的元素,但顺序不同。我正在尝试使用 array1 的索引路径来获取成员,并在另一个数组中检测成员的索引路径。 我不知道我是否可以检测到成员在 NSURL
我有一个文件(假设是一个 PDF)存储在我的 macOS Cocoa 应用程序的磁盘上。我有包含此文件路径的 NSURL。 我目前正在使用 NSView 向用户显示此文件存在,其中包含一个显示文件名的
我为 Swift 2 升级了我的代码,这里出现错误: 无法使用 (fileURLWithPath: NSURL) 类型的参数列表调用类型 NSURL 的初始化程序 代码如下: let dirP
我正在尝试将 NSURL * _Nullable 转换为不可为空。你们有没有人知道我该怎么做? 这里是一些上下文: 我正在尝试使用 ios-oauthconsumer ,我正在尝试初始化一些对象: s
我最近在比较两个 NSURL 并将一个 NSURL 与 NSString(这是一个 URL 地址)进行比较时遇到了一个问题,情况是我从某个地方得到了一个 NSURLRequest,我可能知道也可能不知
我必须解析一个 JSON API 的返回,我已将 URL 转换为一个字符串,然后我将它传递给 NSURL,但在 NSLog 中它显示为 nil。这是我的代码, NSString *urlstring=
我有一个名为 downloadedPhotoURLs 的变量,其类型为 [NSURL]?。 我正在尝试分配返回类型 [NSURL] 的函数的结果(非可选)。 我在分配时解开变量downloadedPh
我有一个网址 http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg 我要提取的文件名为“honda_v4
我有一个 NSURL: 服务器调用?x=a&y=b&z=c 获取 y 值最快、最有效的方法是什么? 谢谢 最佳答案 更新: 自 2010 年撰写本文以来,Apple 似乎已经为此目的发布了一套工具。请
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
-[NSURL startAccessingSecurityScopedResource] 状态的文档: You must balance every call to the startAccessi
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我是一名优秀的程序员,十分优秀!