2012-06-20 6 views
6

Tôi có một thư mục NSFileWrapper mà tôi muốn cập nhật một FileWrapper nhất định. Tôi đã tự hỏi cách tốt nhất là làm như thế nào?Thay thế NSFileWrappers

Cho đến nay tôi đã sử dụng mã này:

[self.fileWrapper addRegularFileWithContents:photoData 
          preferredFilename:@"photo.data"]; 

Tuy nhiên, bất cứ khi nào FileWraper đã tồn tại, tôi nhận được bản sao trong FileWrapper của tôi trông như vậy:

"1__#[email protected]%!#__photo.data" = "<NSFileWrapper: 0x6bb0260>"; 
"2__#[email protected]%!#__photo.data" = "<NSFileWrapper: 0x6b89b80>"; 
"3__#[email protected]%!#__photo.data" = "<NSFileWrapper: 0x6ba1700>"; 
"4__#[email protected]%!#__photo.data" = "<NSFileWrapper: 0x6bc8480>"; 
"photo.data" = "<NSFileWrapper: 0x6bcfc50>"; 

Làm thế nào tôi có thể ngăn chặn điều này và chỉ cần thay thế FileWrapper - trong trường hợp này là photo.data? Tôi không tìm thấy phương pháp nào để thay thế FileWrappers trong NSFileWrapper Class Reference.

Trả lời

5

Tôi nghĩ rằng đây có thể là giải pháp:

NSFileWrapper *oldFileWrapper = [self.fileWrapper.fileWrappers objectForKey:fileName]; 
if (oldFileWrapper) [self.fileWrapper removeFileWrapper:oldFileWrapper]; 

[self.fileWrapper addRegularFileWithContents:[self encodeObject:object] 
          preferredFilename:fileName]; 
0

Tôi chỉ cần stumbled khi vấn đề này và đối với tôi nó là vì tôi đã có một thư mục có tên "Tài nguyên" và một tên "tài nguyên". Điều này đã tạo ra sự cố iCloud vì trên Mac OS X hệ thống tệp không phân biệt chữ hoa chữ thường, nhưng nó nằm trên iOS.

Dường như vấn đề cơ bản trong trường hợp của bạn cũng có thể là chữ hoa/thường liên quan. Tất nhiên bạn đang sửa lỗi này bằng cách thay thế trình bao bọc tệp, điều này sẽ xóa và tái tạo tệp một cách hiệu quả. Đây có thể là giải pháp chấp nhận được đối với các tệp nhỏ, nhưng có thể rất không hiệu quả đối với tệp lớn hơn hoặc nhiều tệp trong thư mục (vì tệp sẽ được đồng bộ hóa ngay cả khi tệp không thay đổi).

+0

Hệ thống tệp OS X có thể phân biệt chữ hoa chữ thường hoặc phân biệt chữ hoa chữ thường ... tùy thuộc vào cách người dùng định dạng ổ đĩa. –

+0

Đó là một điểm hợp lệ. Tôi giả sử định dạng mặc định (như khi bạn mua máy Mac) "Mac OS Extended (Journaled)". – auco