У меня есть функция, которая анализирует мою модель базовых данных в файл CSV, который затем сохраняется в локальном каталоге пользователей, а затем перемещается в их каталог документов iCloud. По какой-то причине каждый раз, когда я нажимаю сохранить, я одновременно получаю копию модели базовых данных в каталоге. Мой Do / Catch ничего не содержит, ссылаясь непосредственно на мою модель - я просто анализирую свой массив и создаю CSV:
func exportDataToCloud() {
let error : Error? = nil
let fileName = "exportedFile.csv"
var csvText = "COL1,COL2,COL3,COL4,COL5,COL6\n"
// Define local and iCloud directories
let localDocumentsURL = FileManager.default.urls(for: FileManager.SearchPathDirectory.documentDirectory, in: .userDomainMask).last! as NSURL
let iCloudDocumentsURL = FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents")
do {
if iCloudDocumentsURL != nil {
// Create the Directory if it doesn't exist
if (!FileManager.default.fileExists(atPath: iCloudDocumentsURL!.path, isDirectory: nil)) {
print("Creating iCloud directory")
try FileManager.default.createDirectory(at: iCloudDocumentsURL!, withIntermediateDirectories: true, attributes: nil)
} else {
print("iCloud directory already exists")
}
} else {
// display alert
print("iCloud is NOT working!")
}
if error != nil {
print("Error creating iCloud DIR")
}
// Add txt file to my local folder
print("creating local file")
let myLocalFile = localDocumentsURL.appendingPathComponent(fileName)
_ = try csvText.write(to: myLocalFile!, atomically: true, encoding: String.Encoding.utf8)
if ((error) != nil){
print("Error saving to local DIR")
}
// If file exists on iCloud remove it
print("Does the file already exist in iCloud?")
var isDir:ObjCBool = false
if (FileManager.default.fileExists(atPath: iCloudDocumentsURL!.path, isDirectory: &isDir)) {
print("Deleting the old file")
try FileManager.default.removeItem(at: iCloudDocumentsURL!)
}
// Copy file from my local directory to iCloud
if error == nil {
print("Copy new file from my local directory to iCloud directory")
try FileManager.default.copyItem(at: localDocumentsURL as URL, to: iCloudDocumentsURL!)
}
}
catch {
print("Error creating a file")
}
}
... но каждый раз, когда я экспортирую CSV-файл, вместе с ним также помечается модель Core Data.
Если я правильно читаю документы Apple, это может быть связано с отсутствием указания фактического файла, поэтому по умолчанию он копирует все содержимое каталога. Если это действительно так, то как мне указать перемещение только определенного файла? Я записываю исходный файл в мой локальный каталог как fileName
, но затем я хочу переместить его в пользовательский каталог iCloud Documents, чтобы он больше не находился в локальном каталоге. Единственное, что мне нужно в локальном каталоге - это хранилище базовых данных.