2012-02-10 35 views
10

Tôi đang cố sao chép các tệp mà tôi thêm vào thư mục có tên "bao gồm" vào thư mục trên thư mục tài liệu cũng được gọi là "bao gồm". Tôi nhận được cho resContents giá trị nil. Tại sao? Cảm ơn bạnCác tệp sao chép iOS từ gói chính vào thư mục tài liệu

- (void)copyResources{ 

     NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"includes"]; 
     NSString *destPath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"includes"]; 

     NSArray* resContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:sourcePath error:NULL]; 

     for (NSString* obj in resContents){ 
      NSError* error; 
      if (![[NSFileManager defaultManager] copyItemAtPath:[sourcePath stringByAppendingPathComponent:obj] toPath:[destPath stringByAppendingPathComponent:obj] 
        error:&error]) 
       NSLog(@"Error: %@", error);; 
     } 

    } 

Trả lời

6

Bạn nên thêm vào dự án Xcode của mình thư mục includes dưới dạng tham chiếu thư mục chứ không phải nhóm.

Nhóm chỉ nhằm giữ mọi thứ có tổ chức thay vì cung cấp cấu trúc thư mục và do đó khi sao chép vào thiết bị, tất cả các tệp sẽ kết thúc ở cùng một mức.

+0

tuyệt vời, đang hoạt động! cảm ơn – Jaume

2

Nhìn vào gói ứng dụng đã biên dịch của bạn.

Thông thường, các gói XCode được tạo bằng phẳng. Điều này có nghĩa là mặc dù các tệp tài nguyên được thêm vào của bạn sẽ được sao chép vào gói, bất kỳ thư mục nào bạn đã tạo sẽ không và do đó không có thư mục "bao gồm" ở đường dẫn tài nguyên. Do đó, nội dung nguồn của bạn sẽ là không. Vì vậy, trong trường hợp của bạn, hãy thử sử dụng chỉ `NSString * sourcePath = [[NSBundle mainBundle] resourcePath];

Chỉnh sửa: Tốt và rõ ràng là việc thêm tham chiếu thư mục cũng hoạt động (tín dụng cho Ignacio Inglese).

+0

ok, nhưng được liệt kê tất cả các tệp, bao gồm .nib và plists! Tôi chỉ cần chọn các tệp từ một thư mục cụ thể. Không thể? – Jaume

+0

Đó là một cấu trúc phẳng trong bó. – twilson

+0

@Jaume Vâng, bạn sẽ phải chọn các tệp bạn cần (có thể là một phần mở rộng phổ biến hoặc giữ một danh sách các tên tệp trong mã của bạn). –

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