2012-06-20 17 views
6

Mam katalog NSFileWrapper, w którym chciałbym zaktualizować pewien FileWrapper. Zastanawiałem się, jaki jest najlepszy sposób?Zamawianie NSFileWrappers

Dotychczas Użyłem tego kodu:

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

Jednak gdy FileWraper już istnieje, mam duplikaty w moim FileWrapper które wyglądają tak:

"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>"; 

Jak mogę temu zapobiec i po prostu zastąpić FileWrapper - w tym przypadku photo.data? Nie znalazłem żadnej metody zastąpienia FileWrappers w NSFileWrapper Class Reference.

Odpowiedz

5

myślę, że może to być rozwiązanie:

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

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

Właśnie natknąłem się na ten temat i dla mnie było to, bo miałem folder o nazwie „Zasoby” i jeden o nazwie „zasobów”. Stworzyło to problem z iCloud, ponieważ w systemie plików system plików nie rozróżnia wielkości liter, ale jest na iOS.

Wygląda na to, że podstawowy problem w twoim przypadku może być związany z dużymi/małymi literami. Oczywiście naprawiasz to, zastępując opakowanie pliku, które skutecznie usuwa i odtwarza plik. Może to być dopuszczalne rozwiązanie dla małych plików, ale może być bardzo nieefektywne dla większych lub wielu plików w katalogu (ponieważ plik byłby zsynchronizowany, nawet gdyby się nie zmienił).

+0

Systemy plików OS X mogą rozróżniać duże i małe i małe litery ... zależy to od sposobu formatowania dysku przez użytkownika. –

+0

To jest ważny punkt. Zakładam domyślny format (jak przy kupowaniu komputera Mac) "Mac OS Extended (Journaled)". – auco