概述
1. 一个
NSURL对象可以代表
- 服务器上一个资源的地址
- 一个本地文件的路径
- 一块任意的编码数据
2. 使用URL对象可以创建URL,访问URL的各个组成部分。对于代表本地文件的URL,还可以直接操作本地文件的属性,比如,修改文件的更新日期。最终,可以把URL对象传给其他API,获取它所代表的内容。例如,
NSURLSession,
NSURLConnection,NSURLDownload(见
URL Loading System Programming Guide)。
3. 操作本地文件时,推荐使用URL对象。 大多数操作读写文件的AppKit对象,都支持使用
NSURL作为文件引用,而不是使用路径。
- 比如,将本地文件的内容读取到一个NSString对象中,可以使用stringWithContentsOfURL:encoding:error:。
- 或者,将本地文件的内容读取到一个NSData对象中,可以使用dataWithContentsOfURL:options:error:。
4.
URL还可以用于程序之间通信。在OS X上,
NSWorkspace类提供了
openURL:方法,用于打开URL指定的地址。类似的,iOS中,
UIApplication类也提供了
openURL:方法。
5.
此外,URL还可以用于粘贴板,见
NSURL Additions Reference(Appkit框架)。
URL结构
URL有两部分组成,baseURL + 相对地址。
baseURL为nil的,URL解析为完整路径。
baseURL不为nil的,URL解析为相对路径。
NSURL *baseURL = [NSURL URLWithString:@"file:///path/to/web_root/"];
NSURL *url = [NSURL URLWithString:@"folder/file.html" relativeToURL:baseURL];
NSURL *absURL = [url absoluteURL];
NSLog(@"absURL = %@", absURL);
可以分为URL scheme(https),host地址(www.example.com),路径(/script)以及参数(name=value)。
书签、安全范围、开始/停止
在OS X 10.6以后,NSURL提供了创建和使用书签对象的功能。书签,提供对文件系统资源的持久引用。使用书签时,将获得资源当前地址的URL。与文件系统关联的书签(通常是文件或者目录),即使用户移动或者重命名资源,甚至重启应用或者重启系统,URL依然可用。
采用应用程序沙盒的应用,要使用文件系统资源,必须使用安全范围的书签。这种书签,在应用程序启动期间,会一直保留APP对资源的访问权限。具体的请参考
App Sandbox Design Guide中的Security-Scoped Bookmarks and Persistent Resource Access。
使用安全范围书签时,会得到一个安全范围URL。要访问这个URL对应的文件系统资源,必须先调用startAccessingSecurityScopedResource,或者其对应的Core Foundation方法CFURLStartAccessingSecurityScopedResource。
当不再需要这个资源的访问权限的时候(通常是关闭资源之后),必须调用stopAccessingSecurityScopedResource,或者对应的Core Foundation方法CFURLStopAccessingSecurityScopedResource来放弃访问权限。调用这个方法,会立即失去权限。
注意: 如果未能成功释放不再需要权限的资源,app就会发生内核资源泄露。 当泄露到一定程度时,除非重新启动程序,否则app就再也不能加载资源到沙盒了。
安全范围书签的方法,见Working with Bookmark Data。
安全范围的URL和字符串路径
复制安全范围URL的时候,安全范围跟源URL一样。获取权限的时候,也是通过调用
startAccessingSecurityScopedResource方法。
如果需要把安全范围URL的路径转化为字符串(通过path方法),比如给一个API传递字符串值,可以根据需要获取。但是,字符串路径就不在安全范围内了,也不能访问对应的资源。
处理对象创建失败
如果格式不正确(比如包含空格和高位字符),创建URL时会失败。 路径必须遵守RFC 2396。
如果NSURL对象创建失败,那么创建方法将返回nil,程序需要处理这种情况。
如果要兼容错误路径字符串,需要使用Core Foundation框架中提供的方法来清除字符串。
采用的协议
NSURLHandleClient
-
URLHandleResourceDidBeginLoading:
-
URLHandleResourceDidCancelLoading:
-
URLHandleResourceDidFinishLoading:
-
URLHandle:resourceDataDidBecomeAvailable:
-
URLHandle:resourceDidFailLoadingWithReason:
作用
创建URL
– initWithScheme:host:path:
+ URLWithString:
– initWithString:
+ URLWithString:relativeToURL:
– initWithString:relativeToURL:
+ fileURLWithPath:isDirectory:
– initFileURLWithPath:isDirectory:
+ fileURLWithPath:
– initFileURLWithPath:
+ fileURLWithPathComponents:
+ URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
– initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
+ fileURLWithFileSystemRepresentation:isDirectory:relativeToURL:
– getFileSystemRepresentation:maxLength:
– initFileURLWithFileSystemRepresentation:isDirectory:relativeToURL:
验证对象
– isEqual:
查询URL
– checkResourceIsReachableAndReturnError:
– isFileReferenceURL
– isFileURL
访问URL的组成部分
– absoluteString
– absoluteURL
– baseURL
– fileSystemRepresentation
– fragment
– host
– lastPathComponent
– parameterString
– password
– path
– pathComponents
– pathExtension
– port
– query
– relativePath
– relativeString
– resourceSpecifier
– scheme
– standardizedURL
– user
修改、转换文件URL
– filePathURL
– fileReferenceURL
– URLByAppendingPathComponent:
– URLByAppendingPathComponent:isDirectory:
– URLByAppendingPathExtension:
– URLByDeletingLastPathComponent
– URLByDeletingPathExtension
– URLByResolvingSymlinksInPath
– URLByStandardizingPath
使用书签数据
+ bookmarkDataWithContentsOfURL:error:
– bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:
+ resourceValuesForKeys:fromBookmarkData:
+ writeBookmarkData:toURL:options:error:
获取/设置文件系统资源属性
– getResourceValue:forKey:error:
– resourceValuesForKeys:error:
– setResourceValue:forKey:error:
– setResourceValues:error:
– removeAllCachedResourceValues
– removeCachedResourceValueForKey:
– setTemporaryResourceValue:forKey:
类方法
bookmarkDataWithContentsOfURL:error:
根据指定URL的别名文件,初始化并返回书签数据。
+ (NSData *)bookmarkDataWithContentsOfURL:(NSURL *)bookmarkFileURL error:(NSError **)error
- bookmarkFileURL: 指向别名文件的url。
- error : 获取文件时发生的错误
- 返回值: 书签数据
如果是OS X 10.6 以前创建的文件,有别名管理信息,但是没有书签数据。 这个方法会为文件生成书签数据。
fileURLWithFileSystemRepresentation:isDirectory:relativeToURL:
根据C字符串代表的本地文件路径,初始化URL对象。
+ (id)fileURLWithFileSystemRepresentation:(const char *)path isDirectory:(BOOL)isDir relativeToURL:(NSURL *)baseURL
- path:文件路径URL的C字符串。如果是相对路径,默认相对于当前工作目录的。
- isDir: 如果路径的最后一部分是目录,则为YES,不是则为NO
- baseURL: 新URL对象的baseURL。必须是文件URL。如果path是相对路径,这个参数将被忽略。
- 返回值: 新URL,发生错误则返回nil
文件系统代表格式参考
File Encodings and Fonts。
fileURLWithPath:
根据指定路径,初始化并返回一个新创建的NSURL对象作为文件URL。
+ (id)fileURLWithPath:(NSString *)path
- path: NSURL对象代表的路径。path必须是合法的系统路径。
- 如果是 ~ 开头的,必须先用stringByExpandingTildeInPath转换。
- 如果是相对路径,默认相对于当前工作目录。
- 参数为nil时,会产生异常。
- 返回值:NSURL对象
如果path是以斜杠结尾的,默认为目录。
如果不是斜杠结尾的,该方法会从文件系统中检查究竟是文件还是目录。
如果文件系统中存在该路径,且是目录,就会在path末尾加上一个斜杠。如果文件系统中没有这个路径,就认为是一个文件,不添加斜杠。
或者,使用fileURLWithPath:isDirectory:,可以显式地指定返回的NSURL对象代表文件还是目录。
fileURLWithPath:isDirectory:
根据指定路径,初始化并返回一个新创建的NSURL对象,作为文件URL。
+ (id)fileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir
- path: NSURL对象代表的路径。path必须是合法的系统路径。
- 如果是 ~ 开头的,必须先用stringByExpandingTildeInPath转换。
- 如果是相对路径,默认相对于当前工作目录。
- 参数为nil时,会产生异常。
- isDir:表示path是否是目录的布尔值。 YES是,NO否。
- 返回值:NSURL对象
fileURLWithPathComponents:
根据指定的路径组件,初始化并返回一个新创建的NSURL对象,作为文件URL。
+ (NSURL *)fileURLWithPathComponents:(NSArray *)components
- components: 路径组件的数组。 如果传nil,会产生异常。
- 返回值: NSURL对象。各个路径组件由正斜杠连接。
resourceValuesForKeys:fromBookmarkData:
根据指定的书签数据,获取指定属性的值。
+ (NSDictionary *)resourceValuesForKeys:(NSArray *)keys fromBookmarkData:(NSData *)bookmarkData
- keys: URL资源属性的名称数组。除了系统定义的标准资源属性,还可以获取创建书签时设置的自定义属性。具体见bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:。
- bookmarkData:书签数据。
- 返回值: 书签数据中,请求的资源值的字典。
URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
根据书签数据创建新URL。
+(id)URLByResolvingBookmarkData:(NSData *)bookmarkData
options:(NSURLBookmarkResolutionOptions)options
relativeToURL:(NSURL *)relativeURL
bookmarkDataIsStale:(BOOL *)isStale
error:(NSError **)error;
- bookmarkData: 书签数据。
- options:参数。要创建支持沙盒的安全范围书签,需要包括参数NSURLBookmarkResolutionWithSecurityScope(可以通过位操作 OR 来连接多个参数)。
- relativeURL:书签数据对应的baseURL。
- 如果使用安全范围书签,获取安全范围URL,该参数要遵守以下规则:
- app范围的书签,参数为nil。
- 文件范围的书签,使用相对与书签数据的路径。
- 如果使用安全范围书签,获取安全范围URL,该参数要遵守以下规则:
- isStale:返回值。YES表示书签过时了,app应该使用返回的新URL创建新的书签,并在当前书签的所有副本中使用新书签。
- error: URL创建失败时的错误。
- 返回值: 根据书签数据创建的NSURL对象。
如果源文件或目录无法定位,则方法调用失败。当方法调用失败时,可以使用
resourceValuesForKeys:fromBookmarkData:方法获取书签数据的信息,如最新更新path
(
NSURLPathKey
),来帮助用户决定如何继续。
如果要获取安全范围URL,使用参数NSURLBookmarkResolutionWithSecurityScope。此外,要使用安全范围,要先配置好。参考Entitlement Key Reference中的Enabling Security-Scoped Bookmark and URL Access。
要访问安全范围URL指向的文件系统资源(换句话说,就是将资源放到应用程序沙盒中),需要调用startAccessingSecurityScopedResource方法。
对于app范围的书签,只有创建这个书签的app可以访问这个资源。
对于文件范围的书签,任何app都可以访问这个书签数据,书签的所有者,以及对应的资源。
注意: 书签只能在OS X 10.7.3 以上使用。
URLWithString:
根据提供的URL字符串,创建NSURL对象。
+ (id)URLWithString:(NSString *)URLString
- URLString: URL字符串。必须符合RFC 2396标准。这个方法根据RFC 1738和1808转换URL。
- 返回值:NSURL对象。如果格式不正确或者URL字符串为nil,返回nil。
这个方法要求URLString只能包含标准URL中的字符。其余的字符都需要经过百分比编码(UTF-8)。
注意:
1. 要创建文件系统路径的NSURL对象,应该使用
fileURLWithPath:isDirectory:。
2. OS X 10.7 及 iOS 5以后,当URLString为nil时,返回nil。 之前的版本,如果URLString为nil,会引发异常。
URLWithString:relativeToURL:
根据baseURL和相对路径,创建NSURL对象。
+ (id)URLWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL
- URLString:相对路径URL。 不可以为nil。必须遵守RFC 2396.
- baseURL: NSURL的基础路径。
- 返回值: NSURL对象。 如果URLString格式错误或者为nil,则返回值为nil。
路径: 文件名
这个方法要求URLString只能包含标准URL中的字符。其余的字符都需要经过百分比编码(UTF-8)。
注意: OS X 10.7 及 iOS 5以后,当URLString为nil时,返回nil。 之前的版本,如果URLString为nil,会引发异常。
writeBookmarkData:toURL:options:error:
根据书签数据,在磁盘上的指定地址,创建一个别名文件。
+ (BOOL)writeBookmarkData:(NSData *)bookmarkData
toURL:(NSURL *)bookmarkFileURL
options:(NSURLBookmarkFileCreationOptions)options
error:(NSError **)error
- bookmarkData: 书签数据
- bookmarkFileURL: 别名文件的地址
- options:参数
- error:创建失败时的错误
- 返回值: YES创建成功,NO创建失败
如果书签数据不是由
NSURLBookmarkCreationSuitableForBookmarkFile创建的,这个方法会报错。
如果bookmarkFileURL指向一个目录,别名文件将会创建在该目录下,文件名为书签数据中的文件名。
如果bookmarkFileURL指向一个文件,别名文件将会按照该地址创建。 并且后缀改为
.alias。
实例方法
absoluteString
返回URL的绝对路径字符串
- (NSString *)absoluteString
- 返回值: 根据RFC 1808的算法,将URL的baseURL和path结合起来,创建一个绝对路径字符串。
absoluteURL
返回URL对应资源的绝对路径URL
- (NSURL *)absoluteURL
- 返回值: 根据RFC 1808的算法,返回URL对应资源的绝对路径URL。如果本身就是绝对路径,返回本身。
baseURL
- (NSURL *)baseURL
- 返回值: 返回URL的基础路径。如果URL是绝对路径URL,则返回nil。
bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:
checkResourceIsReachableAndReturnError:
检查能否找到文件URL对应的资源。
- (BOOL)checkResourceIsReachableAndReturnError:(NSError **)error
- error: 找不到文件URL对应的资源时发生的错误。
- 返回值: YES能找到,NO找不到。
这个方法同步检查文件是否能找到。 在资源不需要其他即时操作时,应该检查可达性。 比如显示指定文档是否存在的用户界面状态的定期维护。比如一个下载列表,如果用户删除了文件,那么需要在列表中删除这一项。
如果app必须操作文件,比如打开文件或者复制文件属性,那么检查可达性、及时处理可能发生的异常将会更高效。
注意: 这个方法只针对文件URL,其他类型的URL,这个方法返回NO。
filePathURL
返回跟原URL指向相同资源的新文件路径URL。
- (NSURL *)filePathURL
- 返回值: 新文件路径URL对象。
如果原URL是一个文件引用URL,这个方法会将URL转换为包含文件系统路径的URL。
如果原URL是一个文件路径URL,返回的URL相同。
如果原URL不是一个文件URL,或者资源不可达,或不存在,则返回nil。
fileReferenceURL
返回跟原URL指向相同资源的新文件引用URL。
- (NSURL *)fileReferenceURL
- 返回值: 新文件引用URL对象。
如果原URL是一个文件路径URL,这个方法会将它转为文件引用URL。
如果原URL是一个文件引用URL,返回的URL相同。
如果原URL不是一个文件URL,则返回nil。
文件系统对象不存在或者不可达的时候,不能创建文件引用URL。如果创建,也只会返回nil。
再文件系统层次的某些领域,文件引用URL不能作为URL路径的叶子节点。
注意: 文件引用URL不应该持久存储。 因为,系统重启或者重新加载时,引用会失效。如果需要持久存储一个文件系统对象,请使用书签。创建书签可以使用
bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:方法。
fileSystemRepresentation
fragment
返回遵循
RFC 1808规则的URL对应网页的一个位置。
- (NSString *)fragment
- 返回值: URL对应网页的位置。如果URL不遵守RFC 1808,则返回nil。
- 比如,URL为 http://www.example.com/index.html#jumpLocation,那么位置标识就是jumpLocation。
getFileSystemRepresentation:maxLength:
getResourceValue:forKey:error:
host
返回遵循
RFC 1808规则的URL的主机名。
- (NSString *)host
- 返回值: URL的主机名。如果URL不遵守RFC 1808,则返回nil。
- 比如,URL为 http://www.example.com/index.html#jumpLocation,那么主机名就是www.example.com。
initByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:
initFileURLWithFileSystemRepresentation:isDirectory:relativeToURL:
initFileURLWithPath:
根据指定路径,初始化一个新创建的NSURL对象。
- (id)initFileURLWithPath:(NSString *)path
- path: NSURL对象代表的路径。path必须是合法的系统路径。
- 如果是 ~ 开头的,必须先用stringByExpandingTildeInPath转换。
- 如果是相对路径,默认相对于当前工作目录。
- 参数为nil时,会产生异常。
- 返回值:NSURL对象
如果path是以斜杠结尾的,默认为目录。
如果不是斜杠结尾的,该方法会从文件系统中检查究竟是文件还是目录。
如果文件系统中存在该路径,且是目录,就会在path末尾加上一个斜杠。如果文件系统中没有这个路径,就认为是一个文件,不添加斜杠。
或者,使用initFileURLWithPath:isDirectory:,可以显式地指定返回的NSURL对象代表文件还是目录。
initFileURLWithPath:isDirectory:
根据指定路径,初始化一个新创建的NSURL对象。
- (id)initFileURLWithPath:(NSString *)path isDirectory:(BOOL)isDir
- path: NSURL对象代表的路径。path必须是合法的系统路径。
- 如果是 ~ 开头的,必须先用stringByExpandingTildeInPath转换。
- 如果是相对路径,默认相对于当前工作目录。
- 参数为nil时,会产生异常。
- isDir:表示path是否是目录的布尔值。 YES是,NO否。
- 返回值:NSURL对象
initWithScheme:host:path:
根据协议、主机名、路径创建URL。
- (id)initWithScheme:(NSString *)scheme host:(NSString *)host path:(NSString *)path
scheme: 协议。 比如URL
http://www.example.com/index.html
中,协议是
http。
host: 主机名(比如
www.example.com),可以为空。
path: 路径(比如
/index.html)。如果路径是 ~ 开头的,必须先用
stringByExpandingTildeInPath转换。
这个方法对 path 和 host 参数自动调用百分比编码。
initWithString:
根据提供的URL字符串,创建NSURL对象。
- (id)initWithString:(NSString *)URLString
- URLString: URL字符串。必须符合RFC 2396标准,且不能为空。这个方法根据RFC 1738和1808转换URL。
- 返回值:NSURL对象。如果格式不正确,返回nil。
这个方法要求URLString只能包含标准URL中的字符。其余的字符都需要经过百分比编码(UTF-8)。
注意: 如果URLString为nil,则方法会抛出异常。
initWithString:relativeToURL:
根据baseURL和相对路径,创建NSURL对象。
- (id)initWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL
- URLString:相对路径URL。 不可以为nil。必须遵守RFC 2396.
- baseURL: NSURL的基础路径。
- 返回值: NSURL对象。 如果URLString格式错误,则返回值为nil。
路径: 文件名
这个方法要求URLString只能包含标准URL中的字符。其余的字符都需要经过百分比编码(UTF-8)。
isEqual:
比较两个对象是否有相同的baseURL和路径。
- (BOOL)isEqual:(id)anObject
- anObject:对比对象。
- 返回值:YES相等,NO不相等。
当且仅当,两个URL的
baseURL和
relativeString都相等时,才返回YES。
isFileReferenceURL
判断是否是文件引用URL
- (BOOL)isFileReferenceURL
- 返回值:YES是,NO否。
isFileURL
判断URL是否使用文件协议
- (BOOL)isFileURL
- 返回值: YES文件协议,NO非文件协议。
文件URL包括文件路径URL和文件引用URL。
lastPathComponent
返回文件URL的最后一个路径组件
- (NSString *)lastPathComponent
- 返回值: URL的最后一部分。比如URL file:///path/to/file,最后一部分就是file。
parameterString
返回遵循
RFC 1808规则的URL的参数。
- (NSString *)parameterString
- 返回值: URL的参数字符串。 如果不遵循RFC 1808,则为nil。
- 比如URL file:///path/to/file;foo,参数为foo。
这个方法要和
query 区分开来。query通常也包括参数。
password
返回遵循
RFC 1808规则的URL的密码。
- (NSString *)password
- 返回值: URL的密码。 如果不遵循RFC 1808,则为nil。
- 比如URL http://username:password@www.example.com/index.html,密码为password。
path
返回遵循
RFC 1808规则的URL的路径。
- (NSString *)path
- 返回值: 使用stringByReplacingPercentEscapesUsingEncoding:方法解码过的URL的路径。 如果不遵循RFC 1808,则为nil。
- 如果URL包含文件(由 isFileURL 决定),那么这个方法的返回值可以作为 NSFileManager 或者 NSPathUtilities 的参数。如果路径最后有斜杠,会被自动去掉。
- 如果URL是文件引用URL,那么返回值为引用资源的当前地址。如果资源不存在了,则为nil。
- 根据RFC 3986,主机名和端口后面的斜杠也作为路径的一部分。比如URL http://www.example.com/index.html,路径为/index.html。
要获取完整的路径,就在
parameterString 方法不为空的时候,在path后面加一个分号,再加上parameterString。
pathComponents
返回各个路径组件的数组。
- (NSArray *)pathComponents
- 返回值:包含各个路径组件的数组。比如URL file:///directory/directory2/file, 则返回值包含directory,directory2和file。
pathExtension
返回文件URL的后缀名。
- (NSString *)pathExtension
- 返回值: 文件的后缀名。 比如URL file:///path/to/file.txt,后缀名为txt。
port
返回遵循
RFC 1808规则的URL的端口号。
- (NSNumber *)port<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
- 返回值:URL的端口号。 如果不遵循RFC 1808,则为nil。
- 比如URL http://www.example.com:8000/index.php,端口号为8000。
query
返回遵循
RFC 1808规则的URL的查询字符串。
- (NSString *)query<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
- 返回值:URL的查询字符串。 如果不遵循RFC 1808,则为nil。
- 比如URL http://www.example.com/index.php?key1=value1&key2=value2,查询字符串为key1=value1&key2=value2。
relativePath
返回遵循
RFC 1808规则的相对路径。
- (NSString *)relativePath<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
- 返回值:URL的相对路径。
- 如果路径最后有斜杠,自动去掉。
- 如果URL本身是绝对路径,则该返回值与 path 相同。
- 如果不遵循RFC 1808,则为nil。
relativeString
返回遵循
RFC 1808规则的相对路径的字符串表示。
- (NSString *)relativeString<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
- 返回值:URL的相对路径的字符串表示。
- 如果URL本身是绝对路径,则该返回值与 absoluteString 相同。
removeAllCachedResourceValues
removeCachedResourceValueForKey:
resourceSpecifier
返回URL的资源说明。
- (NSString *)resourceSpecifier
- 返回值:URL的资源说明。 比如URL http://www.example.com/index.html?key1=value1#jumplink,资源说明为//www.example.com/index.html?key1=value1#jumplink(即冒号后面的所有内容)。
完整的URL就是
scheme : 资源说明的值。
resourceValuesForKeys:error:
scheme
返回URL的协议。
- (NSString *)scheme
- 返回值:URL的协议。 比如URL http://www.example.com/index.html,协议为http。
完整的URL就是 协议 :
resourceSpecifier的值。
注意: 谈到网络协议的时候,通常也会说成”protocol“,但是不是所有的URL协议都是protocol,比如
data://。
setResourceValue:forKey:error:
setResourceValues:error:
setTemporaryResourceValue:forKey:
standardizedURL
返回去除 ”..“ 和 ”.“ 的NSURL对象。
- (NSURL *)standardizedURL
- 返回值: 去除 ”..“ 和 ”.“ 的NSURL对象
URLByAppendingPathComponent:
URLByAppendingPathComponent:isDirectory:
URLByAppendingPathExtension:
URLByDeletingLastPathComponent
URLByDeletingPathExtension
URLByResolvingSymlinksInPath
URLByStandardizingPath
user
返回遵循
RFC 1808规则的URL的用户名。
- (NSString *)user
- 返回值: URL的用户名。 如果不遵循RFC 1808,则为nil。
- 比如URL http://username:password@www.example.com/index.html,用户名为username。
常量
NSURL Schemes
NSURL能解析的协议。
NSString * const NSURLFileScheme;
表明URL指向一个文件。
Common File System Resource Keys
文件系统URL的key。
NSString * const NSURLAttributeModificationDateKey;
NSString * const NSURLContentAccessDateKey;
NSString * const NSURLContentModificationDateKey;
NSString * const NSURLCreationDateKey;
NSString * const NSURLCustomIconKey;
NSString * const NSURLEffectiveIconKey;
NSString * const NSURLFileResourceIdentifierKey;
NSString * const NSURLFileResourceTypeKey;
NSString * const NSURLFileSecurityKey;
NSString * const NSURLHasHiddenExtensionKey;
NSString * const NSURLIsDirectoryKey;
NSString * const NSURLIsExcludedFromBackupKey;
NSString * const NSURLIsExecutableKey;
NSString * const NSURLIsHiddenKey;
NSString * const NSURLIsMountTriggerKey;
NSString * const NSURLIsPackageKey;
NSString * const NSURLIsReadableKey;
NSString * const NSURLIsRegularFileKey;
NSString * const NSURLIsSymbolicLinkKey;
NSString * const NSURLIsSystemImmutableKey;
NSString * const NSURLIsUserImmutableKey;
NSString * const NSURLIsVolumeKey;
NSString * const NSURLIsWritableKey;
NSString * const NSURLLabelColorKey;
NSString * const NSURLLabelNumberKey;
NSString * const NSURLLinkCountKey;
NSString * const NSURLLocalizedLabelKey;
NSString * const NSURLLocalizedNameKey;
NSString * const NSURLLocalizedTypeDescriptionKey;
NSString * const NSURLNameKey;
NSString * const NSURLParentDirectoryURLKey;
NSString * const NSURLPathKey
NSString * const NSURLPreferredIOBlockSizeKey;
NSString * const NSURLTypeIdentifierKey;
NSString * const NSURLVolumeIdentifierKey;
NSString * const NSURLVolumeURLKey;
File Resource Types
NSURLFileResourceTypeKey 的可选值。
NSString * const NSURLFileResourceTypeNamedPipe;
NSString * const NSURLFileResourceTypeCharacterSpecial;
NSString * const NSURLFileResourceTypeDirectory;
NSString * const NSURLFileResourceTypeBlockSpecial;
NSString * const NSURLFileResourceTypeRegular;
NSString * const NSURLFileResourceTypeSymbolicLink;
NSString * const NSURLFileResourceTypeSocket;
NSString * const NSURLFileResourceTypeUnknown;
File Property Keys
文件属性的key。
NSString * const NSURLFileSizeKey;
NSString * const NSURLFileAllocatedSizeKey;
NSString * const NSURLIsAliasFileKey;
NSString * const NSURLTotalFileAllocatedSizeKey;
NSString * const NSURLTotalFileSizeKey;
Volume Property Keys
NSString * const NSURLVolumeLocalizedFormatDescriptionKey;
NSString * const NSURLVolumeTotalCapacityKey;
NSString * const NSURLVolumeAvailableCapacityKey;
NSString * const NSURLVolumeResourceCountKey;
NSString * const NSURLVolumeSupportsPersistentIDsKey;
NSString * const NSURLVolumeSupportsSymbolicLinksKey;
NSString * const NSURLVolumeSupportsHardLinksKey;
NSString * const NSURLVolumeSupportsJournalingKey;
NSString * const NSURLVolumeIsJournalingKey;
NSString * const NSURLVolumeSupportsSparseFilesKey;
NSString * const NSURLVolumeSupportsZeroRunsKey;
NSString * const NSURLVolumeSupportsCaseSensitiveNamesKey;
NSString * const NSURLVolumeSupportsCasePreservedNamesKey;
NSString * const NSURLVolumeSupportsRootDirectoryDatesKey;
NSString * const NSURLVolumeSupportsVolumeSizesKey;
NSString * const NSURLVolumeSupportsRenamingKey;
NSString * const NSURLVolumeSupportsAdvisoryFileLockingKey;
NSString * const NSURLVolumeSupportsExtendedSecurityKey;
NSString * const NSURLVolumeIsBrowsableKey;
NSString * const NSURLVolumeMaximumFileSizeKey;
NSString * const NSURLVolumeIsEjectableKey;
NSString * const NSURLVolumeIsRemovableKey;
NSString * const NSURLVolumeIsInternalKey;
NSString * const NSURLVolumeIsAutomountedKey;
NSString * const NSURLVolumeIsLocalKey;
NSString * const NSURLVolumeIsReadOnlyKey;
NSString * const NSURLVolumeCreationDateKey;
NSString * const NSURLVolumeURLForRemountingKey;
NSString * const NSURLVolumeUUIDStringKey;
NSString * const NSURLVolumeNameKey;
NSString * const NSURLVolumeLocalizedNameKey;
NSURLBookmarkFileCreationOptions
创建书签数据时的选项。
typedef NSUInteger NSURLBookmarkFileCreationOptions;
见
Bookmark Data Creation Options。
Bookmark Data Creation Options
创建书签数据时的选项。
enum {
NSURLBookmarkCreationPreferFileIDResolution = ( 1UL << 8 ),
NSURLBookmarkCreationMinimalBookmark = ( 1UL << 9 ),
NSURLBookmarkCreationSuitableForBookmarkFile = ( 1UL << 10 ),
};
typedef NSUInteger NSURLBookmarkCreationOptions;
Bookmark Data Resolution Options
解析书签数据时的选项。
enum {
NSURLBookmarkResolutionWithoutUI = ( 1UL << 8 ),
NSURLBookmarkResolutionWithoutMounting = ( 1UL << 9 ),
};
typedef NSUInteger NSURLBookmarkResolutionOptions;
NSError userInfo Dictionary Keys
NSError对象的userInfo的key。
NSString * const NSURLKeysOfUnsetValuesKey;
Ubiquitous Item Property Keys
文件的iCloud存储状态。
NSString * const NSURLIsUbiquitousItemKey;
NSString * const NSURLUbiquitousItemDownloadingErrorKey;
NSString * const NSURLUbiquitousItemDownloadingStatusKey;
NSString * const NSURLUbiquitousItemHasUnresolvedConflictsKey;
NSString * const NSURLUbiquitousItemIsDownloadedKey;
NSString * const NSURLUbiquitousItemIsDownloadingKey;
NSString * const NSURLUbiquitousItemIsUploadedKey;
NSString * const NSURLUbiquitousItemIsUploadingKey;
NSString * const NSURLUbiquitousItemPercentDownloadedKey;
NSString * const NSURLUbiquitousItemPercentUploadedKey;
NSString * const NSURLUbiquitousItemUploadingErrorKey;
Ubiquitous Item Downloading Status Constants
NSString * const NSURLUbiquitousItemDownloadingStatusCurrent;
NSString * const NSURLUbiquitousItemDownloadingStatusDownloaded;
NSString * const NSURLUbiquitousItemDownloadingStatusNotDownloaded;