2012-03-07 3 views
7

핵심 데이터를 사용하여 많은 데이터를 유지하는 앱 스토어에 앱이 있습니다. 예외는 이미지를 저장하는 것입니다. 하위 디렉토리의 이미지를 Documents 디렉토리에 저장하고 해당 이미지에 대한 NSURL 참조를 핵심 데이터 저장소의 해당 객체 속성에 저장합니다.앱 업데이트, NSURL 및 문서 디렉토리

업데이트가 앱 스토어로 이동하면 이전 버전의 앱과 함께 저장된 참조를 사용하여 해당 이미지를 찾을 수 없으므로 표시되지 않습니다. 이제 우리는 테스트 용 개발 장치를 사용하고 있기 때문에 dev 어플리케이션이 사용하는 응용 프로그램 디렉토리의 디렉토리가 App Store가 작성/사용하고있는 디렉토리와 다르기 때문에이 문제점이 전파된다는 것이 의문입니다. 응용 프로그램의 앱 스토어 디렉토리와 Xcode에서 디버깅하는 동안 생성 된 앱 스토어 디렉토리 사이의 차이점을 발견했습니다. 이와 같이 코어 데이터에 저장된 URL은 잘못된 응용 프로그램 폴더를 가리 킵니다. 일단 새로운 버전이 상점에 출시되면 이전 앱 버전을 다운로드 할 수 없으므로 다소 디버깅하기가 어렵습니다.

그래서 몇 가지 질문이 있습니다. 동일한 앱의 버전을 다운로드하는 사람들이 동일한 애플리케이션 하위 디렉토리를 보장하여 비 개발 기기에서 문제가되지 않도록 할 수 있습니까?

이러한 리소스의 위치를 ​​나타내는 상대 이미지 URL 또는 문자열을 저장해야합니까, 아니면 절대 URL이 될 것인가를 저장해야합니까? 당신은 파일에 대한 참조를 저장하는 데 상대 URL을 사용해야합니다

NSString *appDocumentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; 

답변

13

:

덕분에 너무 많은, 펠리페

+0

정말 고마워요! 그게 내가 알아야 할 것이 었어! – flizit

+2

iTunes가 업데이트를 설치할 때 새로운 앱 디렉토리가 생성되었음을 몰랐습니다. 절대 경로를 사용하는 심볼 링크가 무효화되었습니다. 따라서이 동작은 iOS 개발자에게주의하십시오! :) –

+0

링크가 끊어졌습니다. 시도해보십시오 : https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTips/PerformanceTips.html –

0

나는 당신이 찾고있는 것은 다음과 같은 생각합니다. 절대 URL은 앱 업데이트 사용자가 응용 프로그램 업데이트를 다운로드

동안 앱 업데이트를

파일을 저장 한 후 변경 가능성이 iTunes는 새로운 응용 프로그램 디렉토리에 업데이트를 설치합니다. 그런 다음 이전 설치를 삭제하기 전에 사용자 데이터 파일을 이전 설치에서 새 응용 프로그램 디렉토리로 이동합니다. 다음 디렉토리에있는 파일은 업데이트 과정 중에 보존이 보장됩니다

  • Application_Home/문서
  • Application_Home/라이브러리

다른 사용자 디렉토리에있는 파일 있지만도를 통해 이동 될 수있다, 업데이트 후에도 에 의존해서는 안됩니다.

샌드 박스에

https://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html

들으 응용 프로그램 홈은 사용자의 홈입니다. 따라서 사용자 집에 짧은 손으로 사용되는 유닉스 물결표, 즉 ~/Documents, ~/Library 등을 사용할 수 있습니다.

-[NSString stringByAbbreviatingWithTildeInPath]을 사용하면 전체 경로를 상대 경로로 바꿀 수 있습니다.그리고 -[NSString stringByExpandingTildeInPath]으로 되돌립니다.