Telechargement de fichier en Cocoa

JoJoS

Membre actif
23 Août 2005
144
3
Bonsoir à tous !!

Bon, ca fait 3 jours que je "bug" sur la façon dont on télécharge un fichier depuis internet avec un objet NSURLDownload...

Je ne comprends pas ce qui ne va pas dans mon code alors que je fais comme dans la doc d'Apple.

Bloc de code:
#import "RecupereResultats.h"


@implementation RecupereResultats

- (id) init
{
	return [self initWithUrlFichier:nil nomFichier:nil];
}

- (id) initWithUrlFichier:(NSURL *)url nomFichier:(NSString *)nom
{
	[super init];
	urlFichier = url;
	nomFichier = [[NSString alloc] initWithFormat:@"~/Library/Application Support/%@", nom];
	return self;
}

- (void) setUrlFichier:(NSURL *)url
{
	[url retain];
	[urlFichier release];
	urlFichier = url;
}
- (NSURL *) urlFichier
{
	return urlFichier;
}

- (void) setNomFichier:(NSString *)nom
{
	[nom retain];
	[nomFichier release];
	nomFichier = nom;
}

- (NSString *) nomFichier
{
	return nomFichier;
}

- (void) demarreTelechargement
{
	if(urlFichier){
		NSURLRequest *leRequest = [NSURLRequest requestWithURL:urlFichier
						cachePolicy:NSURLRequestUseProtocolCachePolicy
						timeoutInterval:60.0];
		NSURLDownload *leDownload = [[NSURLDownload alloc] initWithRequest:leRequest
						delegate:self];
		if(leDownload){
			[leDownload setDestination:nomFichier allowOverwrite:YES];
		} else {
			NSLog(@"Impossible de creer le download");
		}
		
	} else {
		NSLog(@"urlFichier n'est pas definie : %@\n", urlFichier);
	}
}

- (void) dealloc
{
	[nomFichier release];
	[urlFichier release];
	[super dealloc];
}

/* M?©thode delegate de NSURLDownload */
- (void)download:(NSURLDownload *)download didCreateDestination:(NSString *)path
{
	NSLog(@"Fichier %a cree\n", path);
}

- (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename
{
	NSLog(@"Suggestion de nom %@\n", filename);
}

- (void)downloadDidBegin:(NSURLDownload *)download
{
	NSLog(@"Telechargement du fichier %@\n", nomFichier);
}

- (void)download:(NSURLDownload *)download didReceiveDataOfLength:(unsigned)length
{
	NSLog(@"%i du fichier %@.\n", length, nomFichier);
}

- (void)downloadDidFinish:(NSURLDownload *)download
{
	NSLog(@"Fin du telechargement du fichier %@\n", nomFichier);
}

@end

Mon code passe bien dans les méthodes delegate suivantes :
- (void)downloadDidBegin: (NSURLDownload *)download
- (void)download: (NSURLDownload *)download didReceiveDataOfLength: (unsigned)length

Si vous avez une explication ce serait vraiment génial.

Merci d'avance !!!
Et bonne soirée.
 
Personne n'a jamais fait de téléchargement à partir d'un NSURLDownload ???
 
Bon ba j'y suis finalement parvenu à télécharger un fichier...
L'erreur venait de mon chemin... Jamais mis un repertoire non créé en bout, et donc il ne créer pas automatiquement ce repertoire...
De plus, je crois que le ~ n'est pas très apprécier, et pour cela il est préférable d'utiliser la méthode de NSString :
- (NSString *) stringByExpandingTildeInPath

Voilà !!
 
Et bien désolé pour mon code degueux !!
Je commence tout juste en objective-c et pour l'instant je fais juste des essais pour les implémenter dans mon application finale.
Donc désolé si mon code n'était pas assez clair !!!

Et pour le français, je trouvais ça plus lisible mais promis, je me met à l'anglais !!!

Sinon, en quoi mon code est si degueux que ça ???
Je suis preneur sur cette remarque, parce que comme je disais, je suis débutant en objective-c. Je suis plutot habituer au Java, et c'est très différent !
En plus pour mon code, j'ai fait un copier coller de la doc d'Apple... Sauf que j'ai rajouter plein de méthodes delegate pour essayer de voir où mon appli plantait...