UIWebView在模拟器上显示本地存储的文档,但不在设备上显示

时间:2011-11-10 17:46:28

标签: iphone uiwebview

我有一个问题,我正在尝试查看本地存储的文档(Word文档,图像或视频)。我正在使用UIWebView并且在模拟器上它工作得很好,但在设备上,它是一个空白屏幕(控制台中没有抛出错误)。这是我查看文档的代码:

    UIWebView *newWebView;
if (appDelegate.IS_IPAD)
{
    newWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 768, 1024)];
}
else
{
    newWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
}
newWebView.scalesPageToFit = YES;    
[self setWebView: newWebView];
[newWebView release], newWebView = nil;

[[self webView] setDelegate: self];
[[self view] addSubview:[self webView]];
NSURL *nsURL = [NSURL fileURLWithPath:filePath isDirectory:NO];
[[self webView] loadRequest:[NSURLRequest requestWithURL:nsURL]];

以下是我在查看前如何在本地保存文档。我确实认为该文件已成功保存在设备上,就像在模拟器上一样。

    // Save the file on the device
    NSURL *contentUrl = [NSURL URLWithString:selectedContent.contentUrl];
    NSString *fileName = [[contentUrl absoluteString] lastPathComponent];       
    NSString *homeDirectoryPath = NSHomeDirectory();  // Create the path
    NSString *unexpandedPath = [homeDirectoryPath stringByAppendingString:@"/MyApp/"];
    NSString *folderPath = [NSString pathWithComponents:[NSArray arrayWithObjects:[NSString stringWithString:[unexpandedPath stringByExpandingTildeInPath]], nil]];
    NSString *unexpandedImagePath = [folderPath stringByAppendingFormat:@"/%@", fileName];
    NSString *filePath = [NSString pathWithComponents:[NSArray arrayWithObjects:[NSString stringWithString:[unexpandedImagePath stringByExpandingTildeInPath]], nil]];
    if (![[NSFileManager defaultManager] fileExistsAtPath:folderPath isDirectory:NULL])
    {
        [[NSFileManager defaultManager] createDirectoryAtPath:nil withIntermediateDirectories:NO attributes:nil error:nil];        
    }
    // Do the actual write of the file to the device
    NSData *fileData = [NSData dataWithContentsOfURL:myUrl]; // Create the file data reference
    [fileData writeToFile:filePath atomically:YES]; //Save the document to the home directory

2 个答案:

答案 0 :(得分:2)

注意案例问题。模拟器不区分大小写,而iPhone则是!

答案 1 :(得分:0)

我通过将文档保存到默认的文档目录来解决这个问题。这是我用来完成此任务的代码:

    NSArray *arrayPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docDirectory = [arrayPaths objectAtIndex:0];
    NSString *filePath = [docDirectory stringByAppendingString:@"/"];
    filePath = [filePath stringByAppendingString:fileName];
    NSData *fileData = [NSData dataWithContentsOfURL:myUrl];
    [fileData writeToFile:filePath atomically:YES];