iOS 7에서 iOS 시뮬레이터의 문서 디렉토리는 다음 위치에서 찾을 수 있습니다.
/Users/Sabo/Library/Application Support/iPhone Simulator/
그러나 iOS 8 Beta Simulator 에서는 위의 디렉토리에서 iOS 8 에 해당하는 디렉토리를 찾을 수 없습니다 .
iOS 8 시뮬레이터의 문서 디렉토리 경로는 어디에 있습니까?
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)를 살펴보십시오 .
이제 시뮬레이터를 식별 한 후 버전에 따라 폴더 구조가 매우 다릅니다.
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 세트가 포함되어 있으며 앱을 실행할 때마다 계속 변경됩니다. 이것은 기본적으로 내 앱이 다음에 실행될 때 캐시 된 데이터가 없다는 것을 의미합니다.
iOS 9.2 및 Xcode 7.2에서 다음 스크립트는 마지막으로 사용 된 시뮬레이터에서 마지막으로 설치된 애플리케이션의 Documents 폴더를 엽니 다.
cd ~/Library/Developer/CoreSimulator/Devices/
cd `ls -t | head -n 1`/data/Containers/Data/Application
cd `ls -t | head -n 1`/Documents
open .
쉽게 실행할 수있는 스크립트를 만들려면 "Run Shell Script"를 사용하여 Automator 응용 프로그램에 넣으십시오.
Xcode 6.0에서 CoreSimulator를 채택함에 따라 데이터 디렉토리는 버전이 아닌 장치 단위입니다. 데이터 디렉토리는 ~ / Library / Developer / CoreSimulator / Devices // data이며 'xcrun simctl list'에서 확인할 수 있습니다.
Xcode 5.x 또는 이전 버전으로 롤백 할 필요가없는 경우 ~ / Library / Application Support / iPhone Simulator 및 ~ / Library / Logs / iOS Simulator를 안전하게 삭제할 수 있습니다.
업데이트 : Xcode 11.5 • Swift 5.2
if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {
print(documentsPath) // "var/folder/.../documents\n" copy the full path
}
Finder로 이동하여 command-shift-g (또는 메뉴 막대 아래의 이동> 폴더로 이동 ...)를 누르고 전체 경로 "var / folder /.../ documents"를 붙여넣고 go를 누릅니다.
CoreData를 사용하여 전체 경로를 저장할 때 동일한 문제에 직면했습니다. 전체 경로를 검색 할 때 앱이 다시 시작될 때마다 문서 폴더 UUID가 다르기 때문에 null을 반환합니다. 다음은 내 결심입니다.
[[[NSFileManager defaultManager] URLsForDirectory : NSDocumentDirectory inDomains : NSUserDomainMask] lastObject];
iOS 8 시뮬레이터의 문서 디렉토리는 어디에 있습니까?
iPhone Simulator가 Xcode 6과 함께 변경된 것을 눈치 채 셨을 것입니다. 물론 시뮬레이션 된 앱의 Documents Directory 경로도 변경되었습니다. 때때로 우리는 그것을 살펴 봐야 할 수도 있습니다.
그 경로를 찾는 것은 예전처럼 쉽지 않습니다. 즉, Library / Application Support / iPhone Simulator / 7.1 / Applications / 뒤에 앱을 나타내는 암호 번호가 뒤 따릅니다.
Xcode 6 및 iOS 8부터 여기에서 찾을 수 있습니다 : Library / Developer / CoreSimulator / Devices / cryptic number / data / Containers / Data / Application / cryptic number
http://pinkstone.co.uk/where-is-the-documents-directory-for-the-ios-8-simulator/
Appdelegate에서 문서 및 캐시 디렉터리를 보려면 다음 코드를 입력하십시오.
#if TARGET_IPHONE_SIMULATOR
NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);
NSArray* cachePathArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString* cachePath = [cachePathArray lastObject];
NSLog(@"Cache Directory: %@", cachePath);
#endif
로그 :
문서 디렉토리 : / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Documents /
캐시 디렉토리 : / Users / xxx / Library / Developer / CoreSimulator / Devices / F90BBF76-C3F8-4040-9C1E-448FAE38FA5E / data / Containers / Data / Application / 3F3F6E12-EDD4-4C46-BFC3-58EB64D4BCCB / Library / Caches
앱 폴더로 이동하여 무슨 일이 일어나고 있는지 확인하고 미로 UUDID를 통과하지 않으려는 경우 다음을 만들었습니다. https://github.com/kallewoof/plget
그리고 그것을 사용하여 이것을 만들었습니다 : https://gist.github.com/kallewoof/de4899aabde564f62687
기본적으로 일부 앱의 폴더로 이동하려면 다음을 수행합니다.
$ cd ~/iosapps
$ ./app.sh
$ ls -l
total 152
lrwxr-xr-x 1 me staff 72 Nov 14 17:15 My App Beta-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/BD660795-9131-4A5A-9A5D-074459F6A4BF
lrwxr-xr-x 1 me staff 72 Nov 14 17:15 Other App Beta-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/A74C9F8B-37E0-4D89-80F9-48A15599D404
lrwxr-xr-x 1 me staff 72 Nov 14 17:15 My App-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/07BA5718-CF3B-42C7-B501-762E02F9756E
lrwxr-xr-x 1 me staff 72 Nov 14 17:15 Other App-iOS-7-1_iPad-Retina.iapp -> iOS-7-1_iPad-Retina.dr/Applications/5A4642A4-B598-429F-ADC9-BB15D5CEE9B0
-rwxr-xr-x 1 me staff 3282 Nov 14 17:04 app.sh
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.app1-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/69F7E3EF-B450-4840-826D-3830E79C247A
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.app1-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/976D1E91-DA9E-4DA0-800D-52D1AE527AC6
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.app1beta-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/473F8259-EE11-4417-B04E-6FBA7BF2ED05
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.app1beta-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/CB21C38E-B978-4B8F-99D1-EAC7F10BD894
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 com.mycompany.otherapp-iOS-8-1_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/414E8875-8875-4088-B17A-200202219A34/data/Containers/Data/Application/DE3FF8F1-303D-41FA-AD8D-43B22DDADCDE
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 iOS-7-1_iPad-Retina.dr -> simulator/4DC11775-F2B5-4447-98EB-FC5C1DB562AD/data
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 iOS-8-0_iPad-2.dr -> simulator/6FC02AE7-27B4-4DBF-92F1-CCFEBDCAC5EE/data
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 iOS-8-0_iPad-Retina.dr -> simulator/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 iOS-8-1_iPad-Retina.dr -> simulator/414E8875-8875-4088-B17A-200202219A34/data
lrwxr-xr-x 1 me staff 158 Nov 14 17:15 org.cocoapods.demo.pajdeg-iOS-8-0_iPad-Retina.iapp -> /Users/me/Library/Developer/CoreSimulator/Devices/129FE671-F8D2-446D-9B69-DE56F1AC80B9/data/Containers/Data/Application/C3069623-D55D-462C-82E0-E896C942F7DE
lrwxr-xr-x 1 me staff 51 Nov 14 17:15 simulator -> /Users/me/Library/Developer/CoreSimulator/Devices
./app.sh
부품 동기화 링크. 6.0부터 Xcode에서 실행할 때마다 앱이 UUID를 변경하기 때문에 기본적으로 항상 필요합니다. 또한 불행히도 앱은 8.x의 경우 번들 ID로, <8의 경우 앱 이름으로 표시됩니다.
시뮬레이터는 다음 위치에 있습니다.
~/Library/Developer/CoreSimulator/
여기에서는 UUID 이름이있는 디렉토리로 나열됩니다. 최신 항목을 찾으려면 '수정 날짜'별 정렬을 사용하십시오. 내부로 이동 :
/data/Containers/Data/Application/
여기에 해당 장치의 모든 응용 프로그램 목록이 표시됩니다. 다시 정렬하여 최신 앱을 얻을 수 있습니다.
참고 : Xcode는 앱을 실행할 때마다 디렉터리 이름을 변경하므로 데스크톱에서 별칭 / 바로 가기를 만드는 데 의존하지 마십시오.
가장 쉬운 방법은 모든 작업을 자동으로 수행하는 여기 에서 앱을 사용하는 것입니다.
시뮬레이터 디렉토리는 Xcode 6 베타에서 다음으로 이동되었습니다.
~/Library/Developer/CoreSimulator
앱의 Documents 폴더로 디렉토리를 검색하는 것은 조금 더 어렵습니다. 예 :
~/Library/Developer/CoreSimulator/Devices/4D2D127A-7103-41B2-872B-2DB891B978A2/data/Containers/Data/Application/0323215C-2B91-47F7-BE81-EB24B4DA7339/Documents/MyApp.sqlite
if let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory,
.userDomainMask,
true).first {
debugPrint("documentsPath = \(documentsPath)")
}