gpt4 book ai didi

ios - 如何比较 "file://localhost/var/mobile/..."和 "file:///var/mobile/..."的 URL

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:17 25 4
gpt4 key购买 nike

我正在使用 UIWebView:loadRequest 和 NSURLRequest 打开一个本地文件,而 NSURLRequest 又是从 URL 设置的。

url 的基本位置使用以下方法获得:

    baseDirectory = [[NSFileManager defaultManager] URLForDirectory:NSApplicationSupportDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create: YES
error:&err];

这将返回以下形式的 URL:

file://localhost/var/mobile/Applications/Library/ApplicationSupport/ABC/XYZ/page.html

然而,当调用 UIWebViewDelegate shouldStartLoadForRequest:(NSURLRequest*) 方法时,传递的 NSURLRequest 已更改为以下内容:

file:///var/mobile/Applications/Library/ApplicationSupport/ABC/XYZ/page.html

因此,这两个引用同一个文件,但是我有一种情况需要在两者之间进行比较(我需要比较/ABC/XYZ/page.html 部分)并且 NSURL:isEqual 返回 NO 时两者比较。

是否有:a) NSFileManager 的一个方法,它将返回 file:///var/mobile/... 而不是 file://localhost/var/mobile/...

b) 轻松提取/ABC/XYZ/page.html 部分并对其进行比较?

最佳答案

如果您知道这两个文件将始终位于同一台机器上,则 [[URL1 path] isEqualToString:[URL2 path]]


以下单元测试通过:

- (void)testURLPath
{
NSURL *URL = [NSURL URLWithString:@"file://localhost/foo/bar/baz"];
NSString *path = [URL path];
STAssertEqualObjects(path, @"/foo/bar/baz", nil);
}

- (void)testURLPathCompare
{
NSURL *URL1 = [NSURL URLWithString:@"file://localhost/foo/bar/baz"];
NSURL *URL2 = [NSURL URLWithString:@"file:///foo/bar/baz"];
NSString *path1 = [URL1 path];
NSString *path2 = [URL2 path];
STAssertTrue([path1 isEqualToString:path2], nil);
STAssertTrue([[URL1 path] isEqualToString:[URL2 path]], nil);
}

关于ios - 如何比较 "file://localhost/var/mobile/..."和 "file:///var/mobile/..."的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11254145/

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