gpt4 book ai didi

iphone - 图像未使用链接到 bundle 的文档目录中的符号链接(symbolic link)加载到 UIWebView 中?

转载 作者:行者123 更新时间:2023-11-28 22:50:32 25 4
gpt4 key购买 nike

我正在使用 [myWebView loadHTMLString:htmlString baseURL:documentsDirectoryURL] 加载 UIWebView|使用 HTML 的本地 NSString 和应用程序文档目录中目录的 baseURL。

问题是 HTML 包含 <img>带有从上述目录加载的图像的标签。它不是包含图像的 Documents 目录中的目录,而是包含指向应用程序包中包含的图像的符号链接(symbolic link)。

首次启动加载 UIWebView 时,图像无法加载,导致出现标准的 Safari 蓝色问号。如果我随后退出应用程序,重新启动并再次加载 UIWebView,图像加载正常。

有其他人遇到过这个问题吗?

符号链接(symbolic link)是这样创建的:

- (void)createSymbolicLinksForURL:(NSURL *)url inDirectory:(NSURL *)directory {

NSFileManager *fileManager = [NSFileManager defaultManager];

NSDirectoryEnumerator *dirEnum = [fileManager enumeratorAtURL:url
includingPropertiesForKeys:[NSArray arrayWithObject:NSURLIsDirectoryKey]
options:NSDirectoryEnumerationSkipsHiddenFiles | NSDirectoryEnumerationSkipsPackageDescendants
errorHandler:nil];

NSArray *resourceKeys = [NSArray arrayWithObjects:NSURLIsSymbolicLinkKey, NSURLIsDirectoryKey, nil];

for (NSURL *bundledURL in dirEnum) {

if ([[[bundledURL resourceValuesForKeys:resourceKeys error:nil] objectForKey:NSURLIsDirectoryKey] boolValue]) continue;

NSArray *bundledURLPathComponents = [bundledURL pathComponents];

NSURL *destinationURL = directory;

for (NSUInteger componentIndex = [bundledURLPathComponents count] - dirEnum.level; componentIndex < [bundledURLPathComponents count]; componentIndex++) {

destinationURL = [destinationURL URLByAppendingPathComponent:[bundledURLPathComponents objectAtIndex:componentIndex]];
}

if ([fileManager fileExistsAtPath:destinationURL.path]) {

if ([[[destinationURL resourceValuesForKeys:resourceKeys error:nil] objectForKey:NSURLIsSymbolicLinkKey] boolValue]) {

[fileManager removeItemAtURL:destinationURL error:nil];
}
else {

continue;
}
}

NSURL *container = [destinationURL URLByDeletingLastPathComponent];
if (![fileManager fileExistsAtPath:container.path]) [fileManager createDirectoryAtURL:container withIntermediateDirectories:YES attributes:nil error:nil];

NSError *error = nil;
[fileManager createSymbolicLinkAtURL:destinationURL withDestinationURL:bundledURL error:&error];
if (error) NSLog(@"Failed to create symbolic link for %@ (Error: %@)", bundledURL, error);
}
}

UIWebView 加载的 HTML 字符串如下所示(这只是一个片段):

<img src="images/thumb.jpg">
<img src="images/thumb1.jpg">
<img src="images/thumb2.jpg">

在第一次启动时产生这样的结果:

First launch

...以及在任何后续发布中:

Subsequent launch

最佳答案

似乎将符号链接(symbolic link)移动到 Documents 目录的根目录中,因此缩短了 <img>标记为 <img src="thumb.jpg"> ,例如,解决了问题 - 首次启动时加载的图像。

这还不够,因为我确实需要将资源分组到 Documents 目录内的目录中。所以我改为尝试扩展 <img>标签以包含符号链接(symbolic link)的绝对 URL。例如(在模拟器中运行时):

<img src="file://localhost/Users/adam/Library/Application%20Support/iPhone%20Simulator/5.1/Applications/677CFABC-D16A-42C8-8F08-6FF415522FB6/Documents/images/thumb.jpg">

..它有效!

感谢S P Varma小费!

关于iphone - 图像未使用链接到 bundle 的文档目录中的符号链接(symbolic link)加载到 UIWebView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12089802/

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