IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XCode Discussion :

Objective C : pathForResource = NULL ! [XCode]


Sujet :

XCode

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    DEVELOPPEUR
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DEVELOPPEUR

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Par défaut Objective C : pathForResource = NULL !
    Bonjour,

    voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #import "RegisterEntityManager.h"
    
    @implementation RegisterEntityManager
    
    /*
     */
    - (void) loadXMLObjects 
    {
        BOOL success;
        
        NSBundle *bundle = [NSBundle mainBundle];
    
        NSString *path = [bundle pathForResource:@"config" ofType:@"xml" inDirectory:@"config"];
        
        NSLog(@"path = %@", path);
        
    	NSURL *url = [NSURL fileURLWithPath:path];
        
        NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
        
        [xmlParser setDelegate:self];
        
        [xmlParser setShouldResolveExternalEntities:YES];
        
        success = [xmlParser parse]; 
    }
    L'objectif est donc de parser un fichier XML "config.xml" qui se trouve dans le répertoire "config".

    j'utilise un testcase pour tester cette classe.

    voici un extrait du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    @implementation HTBTests
    
    - (void)setUp
    {
        [super setUp];
        
        // initialize the register entity manager
        rem = [[RegisterEntityManager alloc] init];
        
    }
    
    - (void)testExample
    {
        [rem loadXMLObjects];
    }
    @end
    j'obtiens "Path = NULL" lors du build !

    la structure "resource" du dossier est pourtant la suivante :
    resource
    config
    config.xml

    le fichier se trouve bien dans la partie resource du projet.

    j'ai aussi ajouté dans "build phases", l'item "copy files" concernant le répertoire "config".

    j'ai essayé une quantité de solutions proposées sur les forums, j'obtiens toujours ce message "path = null" !

    pouvez vous m'aider SVP.

    merci par avance.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    la structure d'un bundle .app c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Contents
    |-> MacOS
         |-> …
    |-> Resources
          |-> English.lproj
                |-> …
          |-> French.lproj
          |-> …
    si vous avez un dossier "resource" il a probablement été copié comme sous-dossier de Resources et il manque donc un niveau dans votre spécification "inDirectory".

  3. #3
    Membre averti

    Profil pro
    DEVELOPPEUR
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DEVELOPPEUR

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Par défaut
    Merci pour votre réponse.

    la structure est bien celle - ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Contents
    |-> MacOS
         |-> …
    |-> Resources
          |-> English.lproj
                |-> …
          |-> French.lproj
          |-> config
                config.xml

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    essayez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pathForResource:@"config.xml" ofType:nil inDirectory:nil
    s'il trouve, c'est que votre dossier "config" n'est pas dans le bundle…
    s'il ne trouve pas c'est qu'il n'y a de config.xml nulle part dans la sous-hiérarchie de Resources…

  5. #5
    Membre averti

    Profil pro
    DEVELOPPEUR
    Inscrit en
    Novembre 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DEVELOPPEUR

    Informations forums :
    Inscription : Novembre 2009
    Messages : 17
    Par défaut
    merci pour l'astuce.

    j'ai essayé, mais il ne trouve toujours pas le fichier "config.xml".

    Le résultat de mon build se trouve dans :

    /Users/xxxx/Library/Developer/Xcode/DerivedData/Untitled-fbhvlwjdkukhpzfaxtmhsydmoony/Build/Products/Debug/xxx.framework/Versions/current

    current étant un raccourci sur un répertoire qui contient le répertoire resource.

    Je regarde au bon endroit ?

    merci par avance.

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Donc votre produit est un framework, pas une application ?

    Alors le problème, c'est l'usage de [NSBundle mainBundle] : ce code étant exécuté dans le cadre de l'application cliente du framework, le "mainBundle" c'est celui de l'application : pas celui de votre framework…

    Vous devez utiliser [NSBundle bundleForClass:@"NAME_OF_A_CLASS_IN_YOUR_FRAMEWORK"].

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PrimeFaces] selected object est toujours null
    Par chacalpuant1987 dans le forum JSF
    Réponses: 4
    Dernier message: 22/10/2014, 12h00
  2. Réponses: 12
    Dernier message: 28/06/2012, 14h34
  3. Erreur "The given object has a null identifier"
    Par Maram mar dans le forum Hibernate
    Réponses: 1
    Dernier message: 30/08/2011, 13h31
  4. Mon object est toujours null
    Par rahmoucha dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 20/12/2010, 14h25
  5. Could not convert undefined or null to object
    Par dadovb dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 19/12/2005, 14h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo