Cách thông thường để có được quyền truy cập vào các tài liệu thư mục (hoặc thư mục tương tự khác) là mã như sau:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = paths[0];
này tương tự như thực hiện:
NSArray *URLs = [[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];
NSURL *documentsURL = URLs[0];
Sự khác biệt chính là đầu tiên cung cấp cho bạn đường dẫn dưới dạng NSString
trong khi thứ hai cung cấp cho bạn đường dẫn dưới dạng NSURL
.
Các phương pháp khác có thể được sử dụng bằng cách thực hiện:
NSURL *documentsURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
Bạn có thể vượt qua NO
cho thư mục Documents vì nó luôn luôn tồn tại. Bạn nên vượt qua YES
cho thư mục hỗ trợ ứng dụng vì nó không tồn tại theo mặc định. Và lý tưởng bạn không nên vượt qua trong nil
cho lỗi để bạn có thể xem những gì đã xảy ra nếu cuộc gọi phương thức trả về nil
.
Bất kỳ phương pháp nào trong số ba cách tiếp cận này đều hoạt động. Sử dụng số 1 nếu bạn muốn đường dẫn dưới dạng chuỗi. Sử dụng thứ 3 nếu bạn muốn nó làm URL. Sử dụng thứ 2 nếu bạn có nhu cầu hiếm hoi để chuyển vào nhiều hơn một tên miền.
Từ Tài liệu của Apple: 'Bạn nên xem xét sử dụng các phương pháp NSFileManager URLForDirectory: inDomains: và URLForDirectory: inDomain: properForURL: create: error :. trả lại URL, là định dạng ưa thích.' – edelaney05
Điều đó đúng nếu bạn muốn URL. Nếu bạn muốn đường dẫn như là một NSString, thì những gì tôi đăng là tốt. – rmaddy
@ edelaney05 Xem câu trả lời cập nhật của tôi. – rmaddy