2011-07-26 11 views
5

Khi thử nghiệm ứng dụng của tôi trên trình mô phỏng, tôi thích khả năng chỉnh sửa hoặc thậm chí xóa tệp ứng dụng plist (chứa NSUserDefaults) từ thư mục Trình mô phỏng iPhone. Điều này chứng tỏ hữu ích khi thử nghiệm (ví dụ: ứng dụng của bạn lưu trữ từ điển trong đó, nhưng bạn thay đổi mô hình/khóa mà bạn sử dụng cho dữ liệu này và do đó cần xóa từ điển được lưu trữ).Nhận tệp NSUserDefaults plist từ thiết bị

Có thể truy cập tệp này trên thiết bị (cho ứng dụng của riêng bạn) mà không cần jailbreak không?

Cảm ơn trước

+0

Bạn có thể không chỉ xóa ứng dụng khỏi trình mô phỏng/thiết bị và sau đó tạo lại và chạy lại không? – Luke

+0

Đó là một cách nhanh chóng để làm điều đó, nhưng nó sẽ xóa tất cả các ứng dụng khác-ful tập tin là tốt, tài liệu/temp thư mục vv – tsakoyan

+0

Chờ đợi sẽ xóa các ứng dụng từ thiết bị loại bỏ plist là tốt ?? –

Trả lời

5

Các tập tin là trong Library/Preferences. Các tập tin là một plist nhị phân với tên <iOS application target identifier>.plist (tìm kiếm lĩnh vực định danh trong cài đặt mục tiêu ứng dụng của bạn), hoặc liệt kê các nội dung thư mục:

NSString *path = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) firstObject]; 
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:nil]; 

Bạn cũng có thể tải mặc định sạch với một macro #ifdef dựa trên một số biến env :

#ifdef TESTING 
    // use the code provided by tsakoyan below 
#endif 
+0

Trong tài liệu có nội dung là ResetStandardUserDefaults "Đồng bộ hóa mọi thay đổi được thực hiện cho đối tượng mặc định của người dùng chia sẻ và giải phóng nó khỏi bộ nhớ" – tsakoyan

+0

Cảm ơn, tôi nghĩ nó sẽ đặt lại mặc định vì những gì tôi đọc trong phần Thảo luận cho phương pháp đó * " đối tượng mặc định người dùng được chia sẻ mới với danh sách tìm kiếm chuẩn "*, nhưng mục đích đó là nhằm hoàn tác' registerDefaults' nếu tôi hiểu chính xác. Tôi đã +1 câu trả lời của bạn bên dưới. – Jano

3

Nếu bạn chỉ quan tâm đến những giá trị NSUserDefaults, điều này sẽ thùng rác/khôi phục về mặc định toàn cầu tất cả dữ liệu tùy chỉnh của nó

NSDictionary *userDefDic = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; 
NSArray *keys = [NSArray arrayWithArray:[userDefDic allKeys]]; 
for (NSString *key in keys) { 
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:key]; 
} 
[[NSUserDefaults standardUserDefaults] synchronize];