2009-10-04 2 views
0

Я пытаюсь выявить функциональность pathForResource для C++ с объекта-c.
Однако, я очень новичок в объективе-c и не смог распознать, как использовать c-строку в качестве аргумента в объективе-c. Очевидно, у меня есть неправильная идея. Как я могу получить pathForResource для использования строк c в качестве аргумента?Как удалить «NSBundle может не отвечать на« -pathForResource: ofType »« Предупреждение

вот моя функция:

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; 
} 

ответ

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

это по-прежнему оставляет предупреждение, хотя для меня. Мне что-то не хватает? игнорировать предупреждение? – 2009-10-04 03:35:01

+0

Вы не можете игнорировать это предупреждение. Это означает, что метод не найден; это ошибка на любом другом языке. pathForResource: ofType - это метод экземпляра, поэтому вам нужно вызвать его на экземпляр NSBundle, например «основной комплект». В моем примере я исправил код. – Darren

+0

wow большое спасибо! Это дает мне хорошее представление о том, что происходит. – 2009-10-04 04:12:59

Смежные вопросы