[ios] Xcode Device Simulator의 문서 디렉토리 경로

iOS 7에서 iOS 시뮬레이터의 문서 디렉토리는 다음 위치에서 찾을 수 있습니다.

/Users/Sabo/Library/Application Support/iPhone Simulator/

그러나 iOS 8 Beta Simulator 에서는 위의 디렉토리에서 iOS 8 에 해당하는 디렉토리를 찾을 수 없습니다 .

iOS 8 시뮬레이터의 문서 디렉토리 경로는 어디에 있습니까?

여기에 이미지 설명 입력



답변

내 컴퓨터에서 경로는 다음과 같습니다.

~/Library/Developer/CoreSimulator/Devices/1A8DF360-B0A6-4815-95F3-68A6AB0BCC78/data/Container/Data/Application/

참고 : 이러한 긴 ID (예 : UDID)는 컴퓨터에서 다를 수 있습니다.


답변

NSLog“AppDelegate”의 어딘가에 코드 아래에서 프로젝트를 실행하고 경로를 따르십시오. 이렇게하면 “~ / Library / Developer / CoreSimulator / Devices /”내부에서 무작위로 검색하는 대신 문서를 쉽게 찾을 수 있습니다.

목표 -C

NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);

Swift
Swift 1.2를 사용하는 경우 아래 코드를 사용하면 #if #endif블록으로 인해 Simulator를 사용할 때만 개발 중에 출력됩니다 .

#if arch(i386) || arch(x86_64)
  let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString
  NSLog("Document Path: %@", documentsPath)
#endif

“/ Users / ankur / Library / Developer / CoreSimulator / Devices / 7BA821 …”에서 경로를 복사 한 다음 ” Finder “로 이동 한 다음 ” 폴더로 이동 “또는 command+ shift+ g를 붙여넣고 경로를 붙여 넣습니다. 문서 디렉토리 🙂


답변

그냥 쓰기 에 울부 짖는 코드 AppDelegate에 -> didFinishLaunchingWithOptions

목표 C

#if TARGET_IPHONE_SIMULATOR 
// where are you? 
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
#endif 

스위프트 2.X

if let documentsPath = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask).first?.path {
    print("Documents Directory: " + documentsPath)
}

스위프트 3.X

#if arch(i386) || arch(x86_64)
    if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
        print("Documents Directory: \(documentsPath)")
    }
#endif

스위프트 4.2

#if targetEnvironment(simulator)
    if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
        print("Documents Directory: \(documentsPath)")
    }
#endif

출력

/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A / data / Containers / Data / Application / 25174F64-7130-4B91-BC41-AC74257CCC6E / Documents

“/ Users / mitul_marsonia / Library / Developer / CoreSimulator / Devices / E701C1E9-FCED-4428-A36F-17B32D32918A …” 에서 경로를 복사 한 다음 Finder “로 이동 한 다음 “폴더로 이동”또는 command + shift + g 및 경로를 붙여넣고 Mac에서 문서 디렉토리로 이동합니다.


답변

iOS 앱을 개발하는 동안 파일과 폴더를 쉽게 찾을 수있는 SimPholders라는 멋진 유틸리티 앱을 추천합니다. SimPholders2라는 새로운 시뮬레이터와 함께 작동하는 새 버전이 있습니다. simpholders.com 에서 찾을 수 있습니다.


답변

여기에 많은 답변이 있음에도 불구하고 iOS 8.3 시뮬레이터의 폴더 구조가 어떻게 변경되었는지에 대한 이해를 제공하지 않으며 앱 데이터 (문서 폴더)를 찾는 빠른 방법을 제공하지 않습니다.

iOS 8 이후 앱의 데이터 저장 폴더는 앱의 실행 파일과 분리되어 있지만 iOS 7 이하의 폴더 구조는 동일합니다. 유일한 차이점은 모든 시뮬레이터 (다른 유형 및 버전)가 이제 하나의 큰 폴더에 있습니다.

따라서 iOS 8,7,6 시뮬레이터의 경로는 다음과 같습니다.

~/Library/Developer/CoreSimulator/Devices

모든 시뮬레이터는 이제 시뮬레이터를 재설정 할 때마다 변경되는 고유 식별자로 이름이 지정된 폴더에 포함됩니다.

Identifier로 이동하여 각 장치 및 시뮬레이터에 대한를 찾을 수 있습니다 Xcode > Window > Devices(식별자의 처음 3-4 개 문자는 기억하기에 충분합니다).

앱을 설치 한 앱을 찾으려면 Run scheme > devices(화면 2)를 살펴보십시오 .

화면 1

화면 2

이제 시뮬레이터를 식별 한 후 버전에 따라 폴더 구조가 매우 다릅니다.

iOS 8 에서 앱의 실행 파일과 데이터 폴더는 서로 다른 폴더에 있습니다.

실행 가능 :
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Bundle/Application/[appID]

데이터 폴더 :
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/

문서 폴더 :
~/Library/Developer/CoreSimulator/Devices/[simID]/data/Containers/Data/Application/[appID]/Documents

아이폰 OS 7 단지 지금 기억하기 전에 모든 시뮬레이터 (위 참조) 같은 폴더에 같이 폴더 구조 아래 것은 동일합니다.


답변

앱에서 CoreData를 사용하는 경우 터미널을 사용하여 sqlite 파일의 이름을 검색하는 것이 유용한 방법입니다.

find ~ -name my_app_db_name.sqlite

결과에는 앱을 실행 한 모든 시뮬레이터의 전체 파일 경로가 나열됩니다.

정말 Apple이 “Finder의 Reveal Documents 폴더”와 같은 버튼을 iOS 시뮬레이터 파일 메뉴에 추가하기를 바랍니다.


답변

~ / Library / Developer / CoreSimulator / Devices / 경로를 살펴 봐야하는 것이 맞습니다.

그러나 내가보고있는 문제는 앱을 실행할 때마다 경로가 계속 변경된다는 것입니다. 경로에는 Application 문자열 뒤에 다른 긴 ID 세트가 포함되어 있으며 앱을 실행할 때마다 계속 변경됩니다. 이것은 기본적으로 내 앱이 다음에 실행될 때 캐시 된 데이터가 없다는 것을 의미합니다.