2009-04-23 7 views
0

Je veux analyser et fichier XML dans une application iPhone sans aller sur le disque pour cela. Puis-je faire ceci? Comment? J'ai inclus un fichier d'aide TXT dans une application utilisant MSVC.Compilation d'un fichier XML dans un fichier binaire

J'ai placé le fichier XML dans un dossier/groupe nommé Ressources dans le projet.
J'ai le fichier XML dans le répertoire proj.
J'ai fait un clic droit sur le dossier Ressources et sélectionné add -> Fichier existant.
Je fais un clic droit sur le fichier XML et sélectionne GetInfo.

Là, j'ai essayé de modifier le type de chemin {absolu, relatif au projet, etc.}
Mon programme fonctionne très bien sur le simulateur lors de l'utilisation:

NSString * const DG_XmlRecipeFile = @"/Users/appleuser/Cocoa/iHungry6/Recipes.xml"; 

Il me semble qu'il devrait aussi travailler avec :

NSString * const DG_XmlRecipeFile = @"Recipes.xml"; 

Si je définis correctement le type de chemin. Ce ne est pas.

Je suis un premier temporisateur. Merci d'avoir lu ceci, Mark

Répondre

3

Xcode copie les ressources du projet dans l'ensemble d'applications. Vous pouvez accéder à votre fichier dans votre groupe comme suit:

NSString *DG_XmlRecipeFile = [[NSBundle mainBundle] pathForResource:@"Recipes" ofType:@".xml"]; 

Les fichiers de l'ensemble sont en lecture seule. Si vous souhaitez modifier le fichier, vous devrez le copier quelque part que vous pouvez le modifier. Le répertoire Documents de votre application fonctionne bien pour cela.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *docsDirectory = [[paths objectAtIndex:0] retain]; 
NSString *newFilePath = [docsDirectory stringByAppendingPathComponent:@"Recipes.xml"];  
NSError *error = nil; 

[[NSFileManager defaultManager] copyItemAtPath:DG_XmlRecipeFile toPath:newFilePath error:&error]; 
+0

C'est génial. Merci pour votre temps. C'est génial de vous avoir les gars là-bas. – mbarron

+0

Votre réponse me conduit à ce qui suit: NSString * DG_XmlRecipeFile = [[NSBundle mainBundle] pathForResource: @ "DG_Recipes" deType: @ "xml"]; Vous non seulement résolu mon problème, mais aussi m'a donné une meilleure compréhension de la maison l'iPhone gère les chemins indépendants de la plate-forme, tout en essayant d'atteindre une copie du fichier référencé dans le dossier Project Resources Group. Je suis très endetté. Un grand merci, Mark – mbarron

1

Je ne pense pas que le type de chemin auquel vous faites référence soit le chemin d'accès à la ressource dans le regroupement d'applications produit. C'est comment le fichier devrait être référencé dans le fichier .proj.

+0

Merci pour votre réponse. Je vous remercie d'avoir pris le temps. – mbarron

Questions connexes