2012-06-20 2 views
6

У меня есть каталог NSFileWrapper, в котором я хотел бы обновить определенный FileWrapper. Мне было интересно, что лучший способ сделать это?Замена NSFileWrappers

До сих пор я использовал этот код:

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

Однако, когда FileWraper уже существует, я получаю дубликаты в моем FileWrapper, которые выглядят так:

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

Как я могу предотвратить это и просто замените FileWrapper - в этом случае photo.data? Я не нашел никакого способа заменить FileWrappers в NSFileWrapper Class Reference.

ответ

5

Я думаю, что это может быть решение:

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

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

Я просто наткнулся на этот вопрос и для меня это было, потому что у меня была папка с именем «Ресурсы» и один с именем «ресурсы». Это создало проблему iCloud, потому что в Mac OS X файловая система не чувствительна к регистру, но она находится на iOS.

Похоже, что основная проблема в вашем случае также может быть связана с верхним или нижним регистром. Конечно, вы исправляете это, заменяя файловую оболочку, которая эффективно удаляет и воссоздает файл. Это может быть приемлемым решением для небольших файлов, но может быть очень неэффективным для больших или многих файлов в каталоге (потому что файл будет синхронизирован, даже если он не изменился).

+0

Файловые системы OS X могут быть чувствительны к регистру или регистро-независимы ... это зависит от того, как пользователь форматирует диск. –

+0

Это правильный вопрос. Я принимаю формат по умолчанию (как при покупке Mac) «Mac OS Extended (Journaled)». – auco