51 votes

Accéder au fichier local en utilisant NSURL

Je suis en train d'essayer d'accéder à un fichier XML stocker dans le répertoire de ressources. Je suis à l'aide de NSURL pour accéder à ce fichier à l'aide de NSURLConnection( ce fichier va être échangé pour un service distant dans le futur).

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL 
URLWithString:@"file:///XMLTest.xml"] 
cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

NSURLConnection *connection=[[NSURLConnection alloc] initWithRequest:request delegate:self];
if (connection) {
    // Create the NSMutableData to hold the received data.
    // receivedData is an instance variable declared elsewhere.
    response = [[NSMutableData data] retain];
} else {
    NSLog(@"Could not create connection");
}

La classe qui commence à la connexion met en œuvre la NSURLConnection méthodes:

connection:willCacheResponse: 
connection:didReceiveData: 
connectionDidFinishLoading: 
connectionDidFinishLoading:

Une fois que j'ai lancer ce le simulateur de mort, pas de messages sont affichés dans la console donc je suis à une perte pour savoir où chercher. Toutes les idées, ou suis-je juste le faire complètement tort?

160voto

Seva Alekseyev Points 31812

Essayer de charger quoi que ce soit à partir de la racine du système de fichiers est une erreur, une erreur, une erreur. Absolument faux sur l'appareil et probablement faux sur le simulateur. Le répertoire des ressources doit être accessible via la classe NSBundle .

Par exemple, pour obtenir une URL pour un fichier appelé "Data.txt" dans les ressources, utilisez ce qui suit:

 NSURL *MyURL = [[NSBundle mainBundle]
    URLForResource: @"Data" withExtension:@"txt"];
 

34voto

ank Points 1909

Si vous voulez obtenir une URL depuis un chemin (par exemple, parce que vous avez créé un fichier dans NSTemporaryDirectory () et que vous devez l'obtenir sous forme d'URL), vous pouvez facilement le faire en utilisant la méthode fileURLWithPath de NSURL:

 NSString* tempPath = NSTemporaryDirectory();
NSString* tempFile = [tempPath stringByAppendingPathComponent:fileName];
NSURL* URL = [NSURL fileURLWithPath:tempFile];
 

Beaucoup plus facile que + URLWithString: et d'autres méthodes.

21voto

Nick Cartwright Points 3101

Cela fonctionnerait aussi:

 NSString *path = [[NSBundle mainBundle] pathForResource:@"XMLTest" ofType:@"xml"];
 

J'espère que cela t'aides!

2voto

Tu peux essayer ça

     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"file://localhost/Users/userName/Desktop/XMLTest.xml"]];
 

ici en supposant que le fichier est dans le bureau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X