2012-01-11 2 views
2

내 응용 프로그램이 일부 사용자 정의 번들을로드하고이 번들에서 리소스를 사용하려고합니다.Cocoa - 기본 번들 이외의 리소스에서 리소스로드

[NSBundle mainBundle] pathForResource : ofType :]과 같이 기본 번들 인스턴스에서 리소스를 가져 오는 것은 불가능한 것처럼 보입니다.

그래서 [+ NSBundle pathForResource : ofType : inDirectory :]로 바꾸면 잘 작동합니다. 그러나 리소스로드 코드가 "inDirectory :"의 번들 경로를 알아야한다는 것은 매우 불편합니다. 번들을 다른 경로로 이동하면 작동하지 않습니다.

다른 해결책이 있습니까? 고맙습니다!

답변

1

나는 무엇을 성취하려고하는지 완전히 모르겠지만 번들 직접 경로를 사용하지 않고 번들 리소스를로드하려는 경우 [NSBundle bundleForClass:] 또는 [NSBundle bundleWithIdentifier:]을 사용할 수 있습니다. 당신은 당신이 원하는 번들의 인스턴스에 대한 참조가 있으면 다음과 같이 그 내용에 액세스 할 수 있습니다

NSBundle myBundle = [NSBundle bundleWithIdentifier:@"com.my.identifier"]; 
[myBundle pathForResource:@"myResource" ofType:@"type"]; 

당신은 여전히 ​​번들이 이동 한 후에도 정확하고 싶다면, 그건 난이도가 문제가 될 수있다 . 설명서에서 "NSBundle 객체는 파일 시스템의 위치를 ​​나타냅니다 ..."라고 설명합니다. 해당 위치가 이동하면 번들 인스턴스는 여전히 기존 위치를 조사합니다. 번들이 이동되었는지 확인하고 새 위치에서 NSBundle 인스턴스를 다시 만들 수있는 다른 메커니즘을 찾아야한다고 생각합니다.

+0

정확히 내가 원하는 것입니다! 번들에 ID 자체가 있다는 것을 잊었습니다. – notgeek

관련 문제