2009-05-27 7 views
3

기존 파일 추가 옵션을 사용하여 프로젝트에 일련의 폴더를 추가했습니다. 그러면 폴더 내용이 Xcode에 파란색 폴더로 표시됩니다.번들 및 파일 액세스

다음 작품 :

NSString *imageName = [NSString stringWithFormat:@"/File-03/images/image-%02d.jpg", imageIndex]; 

return [UIImage imageNamed:imageName]; 

그러나 나는 그렇게 이미지가 캐시되지 않습니다 imageWithContentsOfFile 사용으로 전환하고자합니다.

코드는 아래 이미지에 대한 nil를 반환

return [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"/File-03/images/image-%02d.jpg", imageIndex]]; 

가 나는 또한 번들, 아니 이동을 사용하여 imageWithContentsOfFile에 접근했습니다.

무엇이 여기에 있습니까?

답변

4

좋아, 내가 필요한 것을 얻을 코드에서 한 가지 방법을 알아 냈 :

NSString *dir = [NSString stringWithFormat:@"File-03/images", imageIndex]; 
    NSString *file = [NSString stringWithFormat:@"image-%02d", imageIndex]; 
    NSString *path = [[NSBundle mainBundle] pathForResource:file ofType:@"jpg" inDirectory:dir]; 

    return = [UIImage imageWithContentsOfFile:path]; 

트릭은 번들 호출 inDirectory이었다.

+0

NSString * dir = @ "File-03/images"; 충분해야하나요? –

6

iPhone에서 파일을 액세스하고 저장하려면 this을 읽는 것이 좋습니다.

Erica Sadun도 앱 번들 내에서 파일에 액세스하는 데 좋은 shorty을 작성했습니다.

Xcode에서 파일을 구성하는 방법은 응용 프로그램 번들에서 파일이 어떻게 끝나는 지 표시하지 않습니다. 가장 좋은 방법은 Finder에서 응용 프로그램 번들을 선택하고 Ctrl + 클릭하고 패키지 내용 표시을 선택하는 것입니다.

+1

패키지 콘텐츠보기를 통해 내 콘텐츠를 번들에 추가하면 어떻게됩니까? –

+0

codesign을 깨고 장치에서 실행되지 않을 것이라고 생각하십시오. – epatel

1

imageWithContentsOfFile 코드의 문제점은 /이 FS의 루트 일 때 번들의 루트라고 가정한다는 것입니다!

따라서 pathForResource:ofType:inDirectory:은 아마도 필요한 경로를 얻는 가장 쉬운 방법 일 것입니다.

그렇지 않으면 번들의 루트를 가져 와서 경로에 접두사를 붙일 수 있습니다.