Câu trả lời:
Câu trả lời được chấp nhận là chính xác cho SDK 3.2 - SDK 4 thay thế thư mục / Người dùng trong đường dẫn đó bằng một số cho mỗi phiên bản iPhone OS / iOS cũ mà nó có thể mô phỏng, do đó, đường dẫn trở thành:
~ / Thư viện / Hỗ trợ ứng dụng / Trình mô phỏng iPhone / [Phiên bản hệ điều hành] / Ứng dụng / [appGUID] /
nếu bạn đã cài đặt SDK trước đó, trình giả lập 3.1.x của nó sẽ tiếp tục lưu dữ liệu của nó vào:
~ / Thư viện / Hỗ trợ ứng dụng / Trình mô phỏng iPhone / Người dùng / Ứng dụng / [appGUID] /
Dành cho Xcode6 và iOS8
~ / Thư viện / Nhà phát triển / CoreSimulator / Thiết bị / [DeviceID] / data / Container / Dữ liệu / Ứng dụng / [AppID] /
po NSHomeDirectory()
trình gỡ lỗi. Cắt và dán vào Go> Chuyển đến thư mục (Cmd-Shift-G).
NSLog
này trong thư mục AppDelegate
's didFinishLaunchingWithOptions:
, hoặc bạn có thể po NSHomeDirectory()
từ các chương trình gỡ rối. Trong cả hai trường hợp, sao chép chuỗi và mở nó trong công cụ tìm với Cmd+Shift+G
. Điều này hoạt động tốt hơn bởi vì bạn đang yêu cầu với một lệnh tiêu chuẩn thay vì cần biết điều gì đó thay đổi.
Có một cách khác (nhanh hơn?) Để tìm nơi dữ liệu ứng dụng của bạn không có Terminal:
NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
cung cấp cho bạn số nhận dạng thiết bị
Tìm thấy rồi:
~/Library/Application Support/iPhone Simulator/User/
iOS 8 ~ / Thư viện / Nhà phát triển / CoreSimulator / Thiết bị / [ID thiết bị] / dữ liệu / Ứng dụng / [appGUID] / Tài liệu /
xcrun instruments -s
Trên Lion Users/[username]/Library
là ẩn.
Để chỉ xem trong Finder, hãy nhấp vào menu 'Go' ở đầu màn hình và giữ phím 'alt' để hiển thị 'Thư viện'.
Nhấp vào 'Thư viện' và bạn có thể thấy thư mục thư viện bị ẩn trước đó của mình.
Lời khuyên trước đây:
Sử dụng
chflags nohidden /users/[username]/library
trong một thiết bị đầu cuối để hiển thị thư mục.
Bắt một Breakpoint ở đâu đó.
Nhập po NSHomeDirectory()
vào cửa sổ giao diện điều khiển
(lldb) po NSHomeDirectory () / Users / usernam / Library / Developer / CoreSimulator / Devices / 4734F8C7-B90F-4566-8E89-5060505E387F / data / Container / Data / Application / 395818BB-6D0F
Nếu Trình mô phỏng đang chạy, bạn có thể nhận đường dẫn đến vùng chứa của bất kỳ ứng dụng nào:
xcrun simctl get_app_container booted <app bundle identifier>
Ví dụ đầu ra:
$ xcrun simctl get_app_container booted com.example.app
/Users/jappleseed/Library/Developer/CoreSimulator/Devices/7FB6CB8F-63CB-4F27-BDAB-884814DA6FE0/data/Containers/Bundle/Application/466AE987-76BC-47CF-A207-266E65E7DE0A/example.app
"khởi động" có thể được thay thế cho hầu hết simctl
các lệnh ở bất kỳ nơi nào mà UDID thiết bị được mong đợi.
Bạn có thể xem danh sách các thiết bị với xcrun simctl list
và nhận trợ giúp về các lệnh cụ thể vớixcrun simctl help
.
Cập nhật : Theo yêu cầu phổ biến trong Xcode 8.3, giờ đây bạn có thể chỉ định loại vùng chứa bạn muốn bằng cách nối thêm "ứng dụng", "dữ liệu", "nhóm" hoặc số nhận dạng nhóm ứng dụng.
Để lấy bộ chứa dữ liệu:
$ xcrun simctl get_app_container booted com.example.app data
Với Xcode 5, bạn có thể sử dụng mã dưới đây:
#import <Foundation/NSFileManager.h>
và:
NSString *homeDir = NSHomeDirectory();
NSLog(@"%@",homeDir);
Kết quả có thể trông giống như:
"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"
Đâu hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh
là một chuỗi hex xác định ứng dụng iOS của bạn.
po NSHomeDirectory()
Có vẻ như Xcode 6.0 đã di chuyển vị trí này một lần nữa, ít nhất là cho các trình giả lập iOS 8.
~ / Thư viện / Nhà phát triển / CoreSimulator / Thiết bị / [DeviceID] / data / Container / Dữ liệu / Ứng dụng / [AppID]
Một trong những cách dễ nhất để tìm vị trí của ứng dụng trong trình giả lập. Người sử dụng "NSTceedDirectory ()"
Bước-
Khi ứng dụng dừng ở điểm dừng, hãy nhập lệnh sau trong bảng điều khiển Xcode.
po NST tạm thời ()
Xem hình ảnh dưới đây để có cái nhìn sâu sắc phù hợp
Bây giờ bạn có đường dẫn chính xác đến thư mục tạm thời. Bạn có thể quay lại và xem tất cả các thư mục liên quan đến ứng dụng.
Hy vọng điều này cũng giúp. Chúc mừng mã hóa :)
po NSHomeDirectory()
?
$ open /Library/Developer/CoreSimulator/Profiles/Runtimes
Ví dụ : iOS 13.0
, watchOS 6.0
Chúng chiếm nhiều không gian nhất, cho đến nay. Mỗi cái có thể lên tới ~ 5GB
$ open ~/Library/Developer/CoreSimulator/Devices
Ví dụ: iPhone Xr
, iPhone 11 Pro Max
. Chúng thường <15 mb mỗi cái.
Mô phỏng được phân chia giữa thời gian chạy và thiết bị. Nếu bạn chạy$ xcrun simctl list
bạn có thể xem tổng quan, nhưng nếu bạn muốn tìm vị trí thực của các trình giả lập này, hãy xem trong các thư mục tôi đã hiển thị.
Hoàn toàn an toàn để xóa thời gian chạy mà bạn không hỗ trợ. Bạn có thể cài đặt lại những thứ này sau nếu bạn muốn.
Đơn giản chỉ cần làm điều này:
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docDirPath);
Và bạn sẽ nhận được đôi khi như thế này:
/ Người dùng / quản trị viên / Thư viện / Nhà phát triển / CoreSimulator / Thiết bị / 58B5B431-D2BB-46F1-AFF3-DFC789D189E8 / data / Container / Data / Application / 6F3B985F-351E-468F-9CFD
Đến đó và bạn sẽ thấy thư mục tài liệu của ứng dụng của bạn bất kể phiên bản XCode. (Sử dụng lệnh "Chuyển đến thư mục ..." trong Finder và chỉ định đường dẫn "~ / library").
Phiên bản Swift cho đường dẫn chuỗi:
let docDirPath =
NSSearchPathForDirectoriesInDomains(.documentDirectory,
.userDomainMask, true).first
print(docDirPath)
và URL thư mục:
let docDirUrl =
FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first
print(docDirUrl)
Đối với Xcode 4.6, nó được lưu trữ trong đường dẫn sau ...
/ Người dùng / [currentuser] / Thư viện / Hỗ trợ ứng dụng / Trình mô phỏng iPhone / 6.1 / Ứng dụng /
Để biết nó lập trình sử dụng mã sau đây
NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);
print("path: \(NSBundle.mainBundle().bundlePath)")
Dành cho iOS 8
Để xác định vị trí thư mục Tài liệu , bạn có thể viết một tệp trong thư mục Tài liệu:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName = [documentsDirectory stringByAppendingPathComponent:@"Words.txt"];
NSString *content = @"Apple";
[content writeToFile:fileName atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];
nói, trong didFinishLaunchingWithOptions
.
Sau đó, bạn có thể mở Terminal và tìm thư mục:
$ find ~/Library -name Words.txt
nếu bất cứ ai vẫn gặp phải vấn đề này ở sư tử, có một bài viết tuyệt vời với 19 mẹo khác nhau để xem thư mục ~ / Library của bạn. tìm bài viết của Dan Frakes tại đây http://www.macworld.com/article/161156/2011/07/view_l Library_folder_in_lion.html
Hãy nhớ thư mục cho trình giả lập được đưa ra dưới đây
~ / Thư viện / Hỗ trợ ứng dụng / Trình mô phỏng iPhone / Người dùng /
Đối với macOS Catalina, tôi đã tìm thấy db của mình trong:
~/Library/Developer/CoreSimulator/Devices/{deviceId}/data/Containers/Data/Application/{applicationId}/Documents/my.db
Để có được applicationId
, tôi chỉ cần sắp xếp các thư mục theo ngày sửa đổi, mặc dù tôi chắc chắn có cách tốt hơn để làm điều đó.
Đối với người dùng bản địa phản ứng không sử dụng Xcode thường xuyên, bạn chỉ có thể sử dụng find
. Mở một thiết bị đầu cuối và tìm kiếm bằng tên cơ sở dữ liệu.
$ find ~/Library/Developer -name 'myname.db'
Nếu bạn không biết tên chính xác, bạn có thể sử dụng ký tự đại diện:
$ find ~/Library/Developer -name 'myname.*'
Bạn có thể thử sử dụng mã dưới đây
NSString *fileName = @"Demo.pdf";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfFileName = [documentsDirectory stringByAppendingPathComponent:fileName];
NSLog(@"File path%@",pdfFileName);
Để mở các chế độ trong đó Ứng dụng mà bạn xây dựng trong xCode trên trình giả lập, hãy làm như sau:
Tôi không có liên kết với chương trình này, nhưng nếu bạn đang tìm cách mở bất kỳ thứ này trong trình tìm kiếm SimPholder thì việc này trở nên dễ dàng đến không ngờ.
cd ~/Library/Application\ Support/iPhone\ Simulator/