2014-11-18 3 views
7

내 앱에서 비디오를 다운로드하고 로컬 캐시/문서 경로에 보관하고 필요할 때 표시합니다. 그것은 iOS 7에서 작동하지만 avplayer는 iOS 8 이상에서 비디오를 보여주지 않습니다. iOS 8에서 모든 문서가 실행되면 문서/캐시 경로가 변경된다는 내용을 읽었습니다. 문제는 한 번 비디오를 다운로드하고 앱에서 여러 번 표시해야한다는 것입니다. 그렇다면 앱에서 동영상을 반복해서 표시하려면 어떻게해야할까요?iOS 8의 모든 실행시 문서 또는 캐시 경로 변경 사항

Here is my code: 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
// NSLog(@"Document folder: %@", paths); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSLog(@"Document folder: %@", documentsDirectory); 

로그인 할 때마다 시작될 때마다 다른 경로가 나타납니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다.

+0

캐시 디렉토리가 아닌 응용 프로그램의 Documents 디렉토리에 액세스하고 있습니다. 캐시의 경우 – quellish

+0

도 경로가 변경됩니다. 응용 프로그램 폴더가 실행될 때마다 변경되는 경로의 숨겨진 번호 –

+0

NSCachesDirectory를 사용하면 로그에 기록됩니다. 여기서도 비밀 번호가 바뀌고 있습니다./사용자/mantavya/라이브러리/개발자/CoreSimulator/장치/76A9B09C-434E-4C29-879D-119556A10AA9/데이터/컨테이너/데이터/응용 프로그램/34093128-B643-4030-B36A-350B3110C12C/라이브러리/캐시 –

답변

10

나는 대답을 얻었다. 시작될 때마다 절대 경로가 변경되므로 상대 경로에 데이터를 저장하고 절대 경로와 상대 경로를 추가 할 때 검색 할 수 있습니다.

NSString *documentsDirectory = @"MyFolder"; 
documentsDirectory = [documentsDirectory stringByAppendingPathComponent:filename]; 
NSString *relativePath = documentsDirectory; 

을하지만 파일을 읽을 때 절대 경로 + 상대 경로를 사용해야합니다 : : 또한 데이터베이스에 대한

NSFileManager *fileManager = [NSFileManager defaultManager]; 
    NSString *fullCachePath = ((NSURL*)[[fileManager URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]).path; 
    NSString *fullPath = [fullCachePath stringByAppendingPathComponent:relativePath]; 

우리가 상대 경로의 데이터를 절약 할 수있는 방법입니다 상대 경로에만 데이터를 저장합니다. 그러나 읽는 동안 절대 경로를 취하고 데이터베이스에서 오는 상대 경로를 추가하고 읽습니다.
여기에서 일하고 있습니다.

+0

파일을 저장할 때 전체 경로를 지정할 필요가 없으므로 파일의 위치를 ​​알 수 있습니까? 가장 좋은 방법은 읽는 시간과 쓰는 시간을 모두 계산하는 것입니다. 그게 나를 위해 일한 것입니다. – stone

+0

상대 경로에 저장할 때 데이터를 저장하지 않습니다. 실패했습니다. documentsDirectory에 저장하도록 안내해 주시겠습니까? – Babul

+0

위의 2 가지 방법과 같이 저장할 수 있습니다. "Folder Name"의 상대 경로이며 그대로 유지됩니다. 또한 다음 부분을 그대로 복사하십시오. –

5

응용 프로그램 컨테이너 또는 샌드 박스로의 경로는 예상되는 조건이어야합니다. 절대 파일 시스템 경로를 샌드 박스 디렉토리에 저장하면 안됩니다. 대신 해당 디렉토리에 상대 경로을 저장하고 매번 NSSearchPathForDirectoriesInDomains의 결과에 추가하십시오.

+0

나에게 모래밭. –

+0

로컬 장치 나 시뮬레이터에 비디오 파일을 저장해야합니다. –