在我的應用程序中,我需要下載幾個plist。iphone下載幾個文件
下載plist中我使用NSURLconnection
在我的代碼我使用的UIAlertView
有UIActivityIndicator
那麼當下載完成後我添加一個按鈕,報警將其關閉。
要下載plist我用我的代碼中的某個地方NSURL
設置爲plist的地址,接下來我設置一個NSURLRequest
URL緩存策略和超時間隔。 然後我將我的NSMutableData
設置爲NSURL
與NSURLRequest
的連接。 在委託didReceiveData
:我追加數據到我的可變數據對象,在didFailWithError:
我處理錯誤。並最終在connectionDidFinishLoading
我序列化我的數據到plist,所以我可以寫入文件我的plist,並釋放我的alertview。
我的問題是:如果我有要下載的文件,我會怎麼辦?因爲每次我的NSURLConnection
完成時都會調用connectionDidFinishLoading
,但是我想在完成所有工作時發佈我的UiAlert
。但是當第一個plist被下載時,我的代碼在connectionDidFinishLoading
將會觸發。
這裏是我的代碼:
視圖做負載:
// set the UiAlert in the view did load
NSURL *theUrl = [NSURL URLWithString:@"http://adress.com/plist/myPlist.plist"];
NSURLRequest *theRequest = [NSURLRequest requestWithURL:theUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
self.plistConnection = [[ NSURLConnection alloc] initwithRequest:theRequest delegate:self startImmediatly:YES];
//plistConnection is a NSURLConnection
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[incomingPListData appendData:data];
}
-(void)connection:(NSURLConnection *)connectionDidFailWithError:(NSError *)error {
// handle error here
}
-(void)connectionDidFinisloading:(NSURLConnection *) connection {
NSPropertyListFormat format;
NSString *serialErrorString;
NSData *plist = [NSPropertyListSerialisation propertyListFromData:incomingPlistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&serialErrorString];
if (serialErrorString) {//error}
else { // create path and write plist to path}
// change message and title of the alert
所以,如果我想todownload的另一個文件我在哪裏可以把請求的連接,我怎麼能告訴didFinishLoading
到當我的所有文件被下載時,都會顯示防火碼
感謝所有
遺憾沒有引用代碼,但我在智能手機上 – Floo 2010-05-17 14:11:47