2011-04-05 111 views
0

我有一个问题,不知道如何解决它,
在我的应用程序我有,通过“文件夹1 /次数1.pdf”的Xcode:iPhone冻结调用“sendSynchronousRequest”当

加载PDF的出发一个UIWebView

加载本身工作得很好,但如果我在我的应用程序调用一个函数,检查如果我有一个2.pdf在同一文件夹,它只是冻结,没有错误没有任何东西。

我调用该函数是:

- (void)isValidURL 
{ 

    int i = 1; 
    NSString *folder = @"folder1"; 
    NSURL *url = [NSURL URLWithString:[baseUrl stringByAppendingFormat:@" %@/%d.pdf",folder,i]]; 
    NSURLRequest *req = [NSURLRequest requestWithURL:url]; 
    NSHTTPURLResponse *res = nil; 
    NSError *err = nil; 
    [NSURLConnection sendSynchronousRequest:req returningResponse:&res error:&err]; 
} 

任何帮助,不胜感激!

谢谢!

回答

3

同步请求在执行其数据传输时冻结UI,如果出现问题,可以无限期地挂起UI。

如果你只是检查文件的本地文件夹,你绝对不需要使用NSURLRequest,这是严重的矫枉过正和工作的错误工具。

您想使用NSFileManagerfileExistsAtPath:方法。更容易。 NSURLRequest用于在整个网络中查看。


编辑补充

如果你说该文件实际上是在网络上,那么你想打一个异步请求,以便用户界面可以继续运行,即使它的只是显示一个旋转活动指标。您可以使用NSURLConnectioninitWithRequest并设置代理等,或者您可以使用几乎完成所有工作的优秀ASIHTTPRequest library

+0

你可以给我一个如何使用它的例子吗? 在我的代码中“baseulr”字符串实际上是我的网站,它在那里寻找文件 – Ponchotg 2011-04-05 04:10:33

+0

@Ponchotg哦,所以你的请求真的是跨网络? – 2011-04-05 04:37:54

+0

非常棒! tweeked和一点点代码玩,但令人惊讶的! – Ponchotg 2011-04-05 08:40:54

1

您可以在Apple的TopPaid sample app中找到更好的示范。在这个项目中,他们解释了如何通过发送异步请求来处理图像下载而不锁定用户界面。在你的情况下,你可以下载文件并以PDF或其他任何你想要的形式保存到文件系统。

0

我觉得你可以很容易地在自己的异步函数中编写代码,它会花费很少的代码。请参阅Apple dev关于异步URL请求的文档。