Какао macOS - setAttributes fileModificationDate устанавливает неправильные данные - PullRequest
0 голосов
/ 15 февраля 2019

в macOS 10.13.6 Я правильно копирую файл с помощью copyItemAtPath.Файл назначения получает ту же дату модификации исходного файла.Отлично.

[mManager copyItemAtPath:src toPath:dst error:&error];

Если я сейчас напечатаю timeIntervalSinceReferenceDate, я получу одинаковые микросекунды для двух файлов.Идеальный.

COPY A src /A/X.rtf modifDate Fri Feb 15 12:28:11 2019, interval 571922891573058112.000000
COPY A dst /B/X.rtf modifDate Fri Feb 15 12:28:11 2019, interval 571922891573058112.000000

Затем я должен изменить какой-либо флаг в файле назначения, поэтому мне нужно снова установить в качестве файла src ModificationDate файла dst.

NSDictionary    *srcAttr = [mManager attributesOfItemAtPath:src error:nil];
NSDictionary    *dstAttr = [mManager attributesOfItemAtPath:dst error:nil];

NSMutableDictionary    *newDstAttr = [NSMutableDictionary dictionaryWithDictionary: dstAttr];
[newDstAttr setObject:[srcAttr fileModificationDate] forKey:NSFileModificationDate];
[mManager setAttributes:newDstAttr ofItemAtPath:dst error:&error];

Но теперь яполучить файл назначения с другой датой модификации (микросекунды).Если я сейчас напечатаю это

dstAttr = [mManager attributesOfItemAtPath:dst error:nil];
NSLog(@"COPY C dst %@ modifDate %@, interval %f", dst, [dstAttr fileModificationDate], [[dstAttr fileModificationDate] timeIntervalSinceReferenceDate] * 1000000000);

Я получу

COPY C dst /B/X.rtf modifDate Fri Feb 15 12:28:11 2019, interval 571922891573057984.000000

Разница составляет всего несколько микросекунд, но, поскольку две даты различаются, мое программное обеспечение для резервного копирования сообщает пользователю, что нам нужносделать резервную копию этого файла, что неправильно.

Как это исправить?Это ошибка с какао?

...