2017-02-26 8 views
0

pathForResource의 작동 방식에 대한 운이나 이유를 알아 내지 못합니다. 더 적절하게 그렇지 않습니다.'NSBundle mainBundle'pathForResource 이상한 동작

내 응용 프로그램에는 수많은 빻은 코코아 콩이 있고, 모두 제대로/Build Phases/Copy Bundle Resources에 있습니다.

또한 File Inspector 탭의 Target Membership에 올바르게 체크 표시되어 있습니다.

간결함을 위해 여기에 2 개의 사례 만 표시합니다. pathForResource 코드를 사용하여 임의적이고 일관성없는 결과를 얻습니다. 내가 생각하는 이유를 나는 nib

누구를 요청해야 할 다른 시간을 xml 요청하고 경우 비록이 내 펜촉의 ALL의 이름을 지정하는 ____. XIB, 어떤 경우에는, 유일한 방법은 내가 pathForResource에서 다시 결과를 얻을 수있다 이 동작이 일치하지 않습니까?

enter image description here

답변

2

이러한 결과는 나에게 특히 놀라운 또는 일치하지 않는 것.

.xib 파일은 NIB의 원본 파일입니다. 그들은 에 직접 복사해서는 안됩니다. 그들은 .nib 파일을 빌드 할 때 컴파일되며 앱에 복사되는 .nib 파일입니다. pathForResource:... ofType:@"xib"은 앱에서 .xib 파일을 찾지 않을 것입니다. 만약 그렇다면, 당신은 어떻게 든 애플 빌딩을 망쳤습니다. .xib 파일은 런타임에 유용하지 않습니다.

아마도 그와 관련이 없으므로 Copy Bundle Resources 빌드 단계에 TabSale.xml 파일이 있습니다. 해당 파일 은 바로 복사 한입니다. 예를 들어 원시 XML 파일을 복사 할 생각이 없다면 (예 : 빌드 타임에 다른 것으로 변환 될 소스 파일 인 경우) 왜 복사되는지 이유를 알아야합니다. 어떤 이유로 든 그것이 TabSale.xib의 가짜 복사본 일 경우, 그냥 제거해야합니다.

+0

좋아, 나는 .xib에 대해 몰랐다. 좋은 정보이지만, 내가 더 염려하고 충분히 명확하게 설명하지 않은 이유는 왜 내가 요청할 수있는 xibs인가? 'pathForResource'와 다른 xibs를 사용하여'xml'을 지정함으로써 나는 할 수 없습니다. 다른 xibs 나는 그들의 길을 되찾기 위해'nib'을 지정해야합니다. 내가 발견 할 수있는 명백한 이유가 없습니다. –

+0

"xml"을 지정하면 ** NIB가 아닌 **입니다. 비슷한 이름이지만 다른 이름을 가진 다른 파일이 있습니다. 스크린 샷에 표시됩니다. 확장은 당연히 .xml입니다. 설명 할 수없는 것은 앱에 .xml 파일이있는 이유입니다. 내 대답의 마지막 단락에서 언급했듯이, 그것은 프로젝트/타겟의 문제입니다. 대부분의 경우 .xml 파일을 프로젝트 및 대상의 Copy Bundle Resources 빌드 단계에 무의식적으로 추가했기 때문에 정교하게 복사됩니다. 원래 그 .xml 파일을 생성 한 이유는 짐작할 수 없습니다. –