Я пытаюсь установить даты создания и изменения файла.
NSFileManager *fileManager = [NSFileManager defaultManager];
NSDate *now = [NSDate date];
NSDictionary *timestampAttr = [NSDictionary dictionaryWithObjectsAndKeys:
now, NSFileCreationDate, now, NSFileModificationDate, nil];
BOOL ret = [fileManager setAttributes:timestampAttr ofItemAtPath:path error:&err];
Дата изменения успешно изменена для файла. Дата создания не изменяется. Зачем?
ret
верно, а err
равно нулю. -attributesOfItemAtPath
возвращает словарь, содержащий оба ключа в timestampAttr
, а также правильную (измененную) дату модификации и неправильную (неизмененную) дату создания.
Редактировать: Использование OS X версии 10.6. Базовый SDK проекта Xcode - 10.5. Файл находится на единственном жестком диске моего компьютера (без RAID) в папке внутри моей домашней папки. Файл находится внутри пакета приложения, если это имеет значение.
Редактировать: Этот простой пример работает:
#import <Cocoa/Cocoa.h>
int main(void)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSFileManager *m = [NSFileManager defaultManager];
NSString *path = ...;
[m setAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[NSDate date],NSFileCreationDate,nil] ofItemAtPath:path error:nil];
[pool drain];
return 0;
}
Я вставил приведенный выше код в приложение, о котором я первоначально спрашивал, задав атрибуты для того же файла, что и простой пример (на моем рабочем столе). Когда код находится внутри приложения, он не работает.
Редактировать: ОК, это безумие. Простой пример выше работал (мой коллега и я оба видели, как он работает на моем компьютере), но теперь он не работает.