fileManager.copyItem (atPath, toPath) - Файл существует. Но это не [дублирует]

Короткий ответ:

Никогда не используйте WITH (NOLOCK).

Длинный ответ:

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

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

Ошибка или результат может быть пустым, пропускать строки или отображать одну и ту же строку несколько раз.

Это связано с тем, что другие транзакции перемещают данные одновременно с чтением.

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

Есть и другие побочные эффекты, которые приводят к жертве увеличения скорости, которое вы надеялись получить в первом место.

Можно утверждать, что использовать его в местах, где вы можете с ним справиться, хорошо, но в чем смысл? Я не могу придумать какую-либо ситуацию, когда допустимы поврежденные данные.

Никогда не используйте NOLOCK когда-либо.

(когда-либо)

5
задан rmaddy 13 August 2014 в 17:16
поделиться

1 ответ

Из документации copyItemAtPath(...) :

dstPath Путь для размещения копии srcPath. Этот путь должен включать имя файла или каталога в новом месте. ...

Вы должны добавить имя файла в целевой каталог для вызова copyItemAtPath().

Что-то вроде (untested):

let destPath = newMTSFolder.stringByAppendingPathComponent(element.lastPathComponent)
if NSFileManager.defaultManager().copyItemAtPath(fullElementPath, toPath: destPath, error: &err) {
     // ...

Обновление для Swift 3/4:

let srcURL = URL(fileURLWithPath: fullElementPath)
let destURL = URL(fileURLWithPath: newMTSFolder).appendingPathComponent(srcURL.lastPathComponent)

do {
    try FileManager.default.copyItem(at: srcURL, to: destURL)
} catch {
    print("copy failed:", error.localizedDescription)
}
9
ответ дан Martin R 25 August 2018 в 01:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: