2009-08-13 40 views
10

Điều tôi muốn làm dường như đủ đơn giản: Nhận một loạt tên tệp trong một "thư mục" nhất định trên ứng dụng của tôi. Nhưng tôi càng chơi với NSFileManager và NSBundle tôi thấy mình bị lạc nhiều hơn ... Tôi chỉ muốn lấy tên tập tin của các tập tin được sắp xếp trong một thư mục cụ thể trong dự án iPhone Xcode của tôi ... Ví dụ: Thư mục được đề cập là được gọi là "Hình ảnh" (được tạo bằng cách sử dụng "Thêm> Nhóm mới" dưới biểu tượng dự án trong Xcode) và chứa 10 hình ảnh .png. Nó có vẻ đơn giản nhưng tôi đang nhận được hư không. Tôi đánh giá cao một số trợ giúp trong việc tìm kiếm câu trả lời.Làm thế nào để có được một NSArray tên tập tin của tất cả các tập tin trong một thư mục nhất định trong ứng dụng của tôi?

Q: Làm cách nào để có NSArray tên tệp của tất cả các tệp trong thư mục đã cho trong ứng dụng của tôi?

Trả lời

29

Nếu bạn muốn thư mục là một phần của Gói ứng dụng, bạn cần phải tạo tham chiếu thư mục bên trong nhóm Tài nguyên, thay vì nhóm (nó sẽ hiển thị trong Xcode dưới dạng thư mục màu xanh trái ngược với màu vàng một).

Để thực hiện việc này, bạn kéo thư mục từ Trình tìm kiếm và chọn tham chiếu thư mục khi được nhắc.

Khi bạn có điều đó, bạn sẽ có thể để có được nội dung của thư mục với một cái gì đó như:

NSError *error = nil; 

NSString *yourFolderPath = [[[NSBundle mainBundle] resourcePath] 
          stringByAppendingPathComponent:@"YourFolder"]; 

NSArray *yourFolderContents = [[NSFileManager defaultManager] 
           contentsOfDirectoryAtPath:yourFolderPath error:&error]; 
+0

Trong trường hợp của tôi, stringByAppendingString: @ "YourFolder" không hoạt động vì đường dẫn cuối cùng bị thiếu "/". Tôi khuyên bạn nên sử dụng stringByAppendingPathComponent: @ "YourFolder". Điều này sẽ bao gồm các ký tự /. Toàn bộ dòng phải là: NSString * yourFolderPath = [[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @ "YourFolder"]; –

+0

Bạn đã đúng, chỉ cần cập nhật nó. – pgb

9

Câu trả lời chấp nhận được chấp thuận cho năm nay. Những điều sau đây nên được sử dụng thay thế.

- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error 

Cập nhật: @macserv đã cập nhật câu trả lời được chấp nhận sau khi tôi đăng nội dung này.

+0

Tôi đã chỉnh sửa câu trả lời được chấp nhận để phản ánh điều này. – macserv

1

Ngày nay, đây là cách bạn làm điều đó:

  1. Từ Finder, Kéo & Thả thư mục của bạn trong tiêu của dự án của bạn và popup tiếp theo sẽ xuất hiện: enter image description here
  2. Như bạn có thể thấy trong ảnh chụp màn hình đó, bạn phải chọn Tạo tài liệu tham khảo thư mục.
  3. Thực hiện giải pháp cho bài đăng này là gì. Ý tôi là:

    NSError * error = nil;

    NSString * yourFolderPath = [[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @ "YourFolder"];

    NSArray * yourFolderContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: yourFolderPath error: & error];

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