インターネットから音楽をダウンロードするためのクラスを作成しましたが、最初の曲のダウンロードが完了した後に曲をダウンロードしようとすると、エラーが発生しました
'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds for empty array'
私のコードはここにあります、
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
[connection release];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
//[responseData release];
dict=[responseString JSONValue];
//title is NSArray object
title=[dict valueForKey:@"sTitle"];
URLTitle=[[NSMutableArray alloc]init];
[URLTitle addObjectsFromArray:title];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [[paths objectAtIndex:0]stringByAppendingPathComponent:@"pslamsSongs.mp3"];
NSLog(@"path %@",documentsDirectoryPath);
[receivedData writeToFile:documentsDirectoryPath atomically:YES];
if (receivedData) {
UIAlertView *alt = [[UIAlertView alloc] initWithTitle:@"Download Completed" message:@"Download Music completed, you can access the music from iTunes" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[alt show];
[alt release];
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [URLTitle count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
newCell = nil;
newCell = [tableView dequeueReusableCellWithIdentifier:identifier];
if(newCell == nil)
{
NSLog(@"newCell ===================");
NSArray *nibViews = [[NSBundle mainBundle] loadNibNamed:@"downloadPageCell" owner:self options:nil];
newCell = [ nibViews lastObject];
}
newCell.downloadButton.tag=indexPath.row;
[newCell.downloadButton addTarget:self action:@selector(downloadButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
newCell.downloadButton.tag=indexPath.row;
return newCell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}
-(void)downloadButtonPressed:(UIButton*)sender
{
UIButton *btn1 = (UIButton *)sender;
//**i got the error in this line**
appendString=[URLTitle objectAtIndex:btn1.tag];
appendString= [appendString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
URL= [staticURL stringByAppendingString:appendString];
NSLog(@"download button pressed");
downloadURL=[[NSURL alloc]initWithString:URL];
theRequest = [NSURLRequest requestWithURL:downloadURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
receivedData = [[NSMutableData alloc] initWithLength:0];
connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES];
}
最初のダウンロードを完了した後、次のダウンロードをクリックするとアレイが空になります。解決策はありますか?