2015-04-19 18 views
11

Trong ứng dụng iOS của chúng tôi, chúng tôi sử dụng vùng chứa dùng chung để chia sẻ tệp giữa ứng dụng iOS chính của chúng tôi và tiện ích mở rộng của nó (cụ thể là Tiện ích mở rộng WatchKit), sử dụng phương thức [NSFileManager containerURLForSecurityApplicationGroupIdentifier:]. Đối với mục đích gỡ lỗi chúng ta cần phải truy cập vào nội dung của container chia sẻ này, vì vậy chúng tôi đã cố gắng để xuất khẩu toàn bộ thùng chứa App sử dụng cửa sổ Devices trong Xcode:Làm cách nào để xuất vùng chứa được chia sẻ của Ứng dụng iOS bằng Xcode6.2?

Screenshot from Xcode

Tuy nhiên, lưu trữ chung không được bao gồm trong các container, có lẽ bởi vì nó nằm trong một con đường khác nhau trên thiết bị chính nó.

Câu hỏi đặt ra là làm cách nào để chúng tôi có thể nhận được vùng chứa được chia sẻ, nếu điều này thậm chí có thể xảy ra?

Trả lời

2

Tôi đang sử dụng mã này để in ra trong giao diện điều khiển đường dẫn đến cơ sở dữ liệu SQLite địa phương của tôi:

NSString *groupContainer = [[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.com.myapp.mycontainer"] path]; 
NSString *sqlitePath = [NSString stringWithFormat:@"%@/Database.sqlite", groupContainer]; 
NSURL *url = [NSURL fileURLWithPath:sqlitePath]; 

sau đó sao chép và dán chuỗi trong Finder -> Go to vì vậy tôi đi trực tiếp vào thư mục. Điều này làm việc tốt trong Simulator nhưng tôi không nghĩ rằng bạn có thể truy cập vào nhóm container chia sẻ của iPhone của bạn từ máy Mac của bạn.

+1

Cảm ơn @BalestraPatrick, tôi đã biết về giải pháp Mô phỏng, nhưng chúng tôi cần một giải pháp cho các thiết bị thực sự cho việc ghi nhật ký sau khi thực tế từ thiết bị thử nghiệm beta. –

0

Giải pháp tốt nhất mà tôi tìm thấy là tạo bản sao lưu thiết bị của bạn và sau đó sử dụng iExplorer để khám phá bản sao lưu. Có rất nhiều thư mục AppDomainGroup-*. Mặc dù vì một số lý do không phải tất cả các tệp đều được sao lưu (có thể do cài đặt được áp dụng cho các tệp bị bỏ qua trong khi sao lưu).

1

Sao chép dữ liệu của bạn từ vùng chứa nhóm vào thư mục tài liệu. Sau đó tải xuống vùng chứa ứng dụng bằng cách sử dụng xcode.

NSFileManager.defaultManager().copyItemAtURL(url, toURL: NSURL.fileURLWithPath(AppDelegate.applicationUserDirectory())) 

url đây có thể thu được sử dụng bên dưới chức năng của NSFileManager

func containerURL(forSecurityApplicationGroupIdentifier groupIdentifier: String) -> URL? 
+0

url biến của bạn tại đây, điều này sẽ là gì nếu cố gắng truy cập vào Vị trí mặc định của một realm db tức là một địa chỉ hiển thị trong Tài liệu sau khi hiển thị Nội dung gói? – user2363025

+0

@ user2363025 bạn có thể sao chép tất cả nội dung của container vào thư mục tài liệu rồi chọn những gì bạn muốn kiểm tra. – Vishun

6

Tôi đã nói với các thành viên đội Xcode tại WWDC rằng đây là không thể (tại thời điểm viết bài, Xcode 7.3 & 8 beta 1). Tôi đã nộp radar, mà tôi khuyên mọi người nên lấy ý kiến ​​hoặc nhận xét để chúng tôi có thể nhận được chức năng này.

+1

Mọi cập nhật liên quan đến nó? – Rygen

Các vấn đề liên quan