2009-10-04 4 views
0

J'essaie d'exposer la fonctionnalité pathForResource à C++ à partir d'objectif-c.
Cependant, je suis très nouveau à l'objectif-c et n'ai pas été capable de discerner comment utiliser une chaîne c comme argument dans l'objectif-c. De toute évidence, j'ai une mauvaise idée ici. comment puis-je obtenir pathForResource pour utiliser les chaînes c comme argument?Comment faire pour supprimer "NSBundle peut ne pas répondre à '-pathForResource: ofType'" avertissement

ici est ma fonction:

static std::string getAssetPath(std::string name, std::string ending) 
{ 

const char * nameChar = name.c_str(); 
const char * endingChar = ending.c_str(); 
NSString* assetPath = [NSBundle pathForResource:&nameChar 
      ofType:&endingChar]; 
std::string str; 
str = std::string([assetPath cStringUsingEncoding: NSASCIIStringEncoding]); 
return str; 
} 

Répondre

3
NSString* nameChar = [NSString stringWithCString:name.c_str() encoding:NSUTF8StringEncoding];  
NSString* endingChar = [NSString stringWithCString:ending.c_str() encoding:NSUTF8StringEncoding]; 

NSString* assetPath = [[NSBundle mainBundle] pathForResource:nameChar ofType:endingChar]; 
+0

cela laisse encore l'avertissement pour moi bien. Je pourrais manquer quelque chose? ignorer l'avertissement? –

+0

Vous ne pouvez pas ignorer cet avertissement. Cela signifie que la méthode n'a pas été trouvée. c'est une erreur dans une autre langue. pathForResource: ofType est une méthode d'instance, vous devez donc l'appeler sur une instance de NSBundle, telle que "bundle principal". J'ai corrigé le code dans mon exemple. – Darren

+0

wow merci beaucoup! Cela me donne une bonne idée de ce qui se passait. –

Questions connexes