Je veux ajouter des fichiers statiques (image, binaire, etc ...) à mon application. Je les ai placés dans un dossier nommé Resources
et je l'ai ajouté à mon projet XCode.
Ensuite, j'ai ces fichiers ajoutés au Copy Bundle Resources
dans l'onglet Build Phases
dans les paramètres du projet.
Cependant, je n'arrive pas à me référer à eux correctement.
Par exemple, lire un fichier binaire:
NSInputStream *is = [[NSInputStream alloc] initWithFileAtPath:@"data.bin"];
if(![is hasBytesAvailable]) NSLog(@"wrong");
Cela échoue et imprime toujours wrong
J'ai essayé une approche similaire avec NSData initWithContentsOfFile:
mais cela ne s'exécute même pas. Une autre tentative a été d'utiliser [NSBundle mainBundle]
, mais cela n'a pas non plus été exécuté complètement.
Je suis nouveau sur iOS s'il vous plaît aidez je peux accéder à mes fichiers locaux! Toute aide serait appréciée.
Je vous remercie,
Vous devez vous assurer que vous accédez au fichier au bon endroit. Xcode place vos fichiers de ressources dans le "lot d'applications" de l'application dans le répertoire Resources . Il y a plusieurs façons de les extraire.
Une méthode courante consiste à obtenir le chemin d'accès d'un fichier dans votre lot:
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *myFile = [mainBundle pathForResource: @"data" ofType: @"bin"];
Si vous avez d'autres fichiers à des emplacements non standard dans votre bundle, il existe des variantes de pathForResource qui vous permettent de spécifier un nom de répertoire.
Si vous voulez voir l'emplacement réel utilisé par le simulateur sur votre disque dur pour pouvoir l'inspecter, vous pouvez dire:
NSLog(@"Main bundle path: %@", mainBundle);
NSLog(@"myFile path: %@", myFile);
Recherchez le "Guide de programmation du paquet" dans la bibliothèque de documentation Xcode pour commencer. :-)
Utilisez NSBundle
class pour cela. Par exemple:
NSString *path = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"bin"];
NSInputStream *is = [[NSInputStream alloc] initWithFileAtPath:path];
...
En effet, il est nécessaire d'appeler [est ouvert] même si vous "initialisezAvecFichierAtPath". Je penserais que l'initialisation ouvrirait automatiquement le fichier pour vous, mais ce n'est pas le cas.