Итак, я хочу написать json, созданный в коде, в пользовательский локальный каталог документов, но, похоже, это работает.
struct Puzzle: Codable {
let id: Int?
let puzzle: Int?
let moves: Int?
}
class PuzzleController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// create reference to default filemanager object
let filemgr = FileManager.default
// get documents directory path
let dirPath = filemgr.urls(for: .documentsDirectory, in: .userDomainMask)
let docsDir = dirPath[0].path
// change to current working directory
filemgr.changeCurrentDirectoryPath(docsDir)
// create a new directory
let docsURL = dirPath[0]
let newDir = docsURL.appendingPathComponent("json").path
do {
try filemgr.createDirectory(atPath: newDir, withIntermediateDirectories: true, attributes: nil)
} catch let error as NSError {
print(error.localizeDescription)
}
// create arrary of json objects
let jsonPuzzle = [Puzzle(id: 1, puzzle: 1, moves: 1), Puzzle(id: 2, puzzle: 2, moves: 2), Puzzle(id: 3, puzzle: 3, moves: 3)]
// create url to json file
let jURL = URL(string: newDir)?.appendingPathComponent("pjson.json")
// write to json file
do {
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let jsonData = try encoder.encode(jsonPuzzle)
try jsonData.write(to: jURL)
} catch let jError {
print(jError)
}
}
}
Я продолжаю получать CFURLCopyResourcePropertyForKey, потому что он был пропущенURL, который не имеет схемы и Ошибка Domain = NSCocoaErrorDomain Code = 518 "Файл не может быть сохранен, поскольку указанный тип URL не поддерживается."
Что я делаю неправильно? Каковы надлежащие шаги, необходимые для локальной записи json в файл без использования стороннего API?
Содержимое jURL по запросу одного из комментаторов. "/ Пользователи / пусто / Библиотека / Разработчик / CoreSimulator / Устройства / 920F6A0F-E814-49E2-A792-04605361F139 / data / Контейнеры / Данные / Applicatio ... ir / pjson"