Я пытаюсь сделать преобразование из Objc в swift и иметь лучшие дни.Как сохранить/получить словарь из файла с помощью SwiftyJSON
У меня есть класс со словарем:
collaborationDictionary:[String:Set<String>]
Я пытаюсь писать/читать этот словарь в/из файла и просто не вполне может показаться, чтобы заставить его работать. Я должен сохранить словарь, используя следующую структуру JSON, и я должен использовать SwiftyJSON.
{ "Collaborations" : {
"5604" : [
"whiteboard.png",
"VID_20161123_135117.3gp",
"Photo_0.jpeg"]
"5603" : [
"VID_20161123_135117.3gp"],
"5537" : [
"Screenshot_20151212-132454.png",
"VID_20161202_083205.3gp",
"VID_20161123_135117.3gp",
"Photo_0.jpeg",
"Screenshot_20151212-132428.png",
"Screenshot_20151212-132520.png",
"IMG_20161017_5.jpg",
"whiteboard.png"]}
}
У меня нет реальной проблемы с поиском или извлечением файла или записью файла. Я просто не могу понять, как вручную загружать SwiftyJSON. Мне нужно, чтобы объект JSON назывался «Collaborations» наверху. Он должен содержать словарь идентификаторов сотрудничества (5604, 5603 ...). Каждое сотрудничество содержит массив строк (имена файлов). Я включаю код, который я использую для чтения/записи файла, но мне нужна помощь в библиотеке SwiftyJSON.
Это элемент данных член я использую для хранения данных выше:
Эти функции мне нужно закончить:
private var collaborationDictionary:[String:Set<String>] = [:]
func getUploadedFileSet() {
collaborationDictionary = [:]
let documentsURL = URL(string: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
let appURL = documentsURL?.appendingPathComponent(APP_DISTINGUISHED_NAME)
let jsonFileURL = appURL?.appendingPathComponent(UPLOADED_ITEMS_DB_JSON)
if FileManager.default.fileExists(atPath: (jsonFileURL?.absoluteString)!) {
do {
let data = try Data(contentsOf: jsonFileURL!, options: .alwaysMapped)
let json = JSON(data: data)
// ************************************************
// NEED HELP START
// NOW WHAT???? What is the SwiftyJSON code
?????????????????????????
// NEED HELP END
// ************************************************
} catch let error {
print(error.localizedDescription)
}
}
}
func saveUploadedFilesSet() {
let documentsURL = URL(string: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
let appURL = documentsURL?.appendingPathComponent(APP_DISTINGUISHED_NAME)
let jsonFileURL = appURL?.appendingPathComponent(UPLOADED_ITEMS_DB_JSON)
do {
let dirExists = FileManager.default.fileExists(atPath: (appURL?.absoluteString)!)
if !dirExists {
try FileManager.default.createDirectory(atPath: (appURL?.absoluteString)!, withIntermediateDirectories: false, attributes: nil)
}
// ************************************************
// NEED HELP START
// NOW WHAT???? What is the SwiftyJSON code
?????????????????????????
// NEED HELP END
// ************************************************
// Write to file code - haven't written it yet but that should be easy
} catch let error as NSError {
print(error.localizedDescription);
}
}
Любое направление будет высоко ценится. Благодаря!
EDIT
Я был в состоянии понять, как загрузить прилагающуюся структуру JSON из файла. Вот код:
func getUploadedFileSet() {
let documentsURL = URL(string: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
let appURL = documentsURL?.appendingPathComponent(APP_DISTINGUISHED_NAME)
let jsonFileURL = appURL?.appendingPathComponent(UPLOADED_ITEMS_DB_JSON)
if FileManager.default.fileExists(atPath: (jsonFileURL?.absoluteString)!) {
do {
let data = try Data(contentsOf: jsonFileURL!, options: .alwaysMapped)
let json = JSON(data: data)
if json != nil {
for (key, subJson) in json[kCollaborations] {
let stringArray:[String] = subJson.arrayValue.map { $0.string! }
let stringSet = Set(stringArray)
collaborationDictionary.updateValue(stringSet, forKey: key)
}
} else {
print("Could not get json from file, make sure that file contains valid json.")
}
} catch let error {
print(error.localizedDescription)
}
}
Я до сих пор не понял, как сохранить совместный документ в Word. Моя самая большая проблема заключается в том, как ввести ключ «Сотрудничество». Есть идеи?
Каков ваш конкретный вопрос? – Raphael
В частности, что такое код для чтения и запись объекта json. Я выделим разделы, где код должен быть проверен/исправлен или создан. – JustLearningAgain
длинный рассказ короткий, вам нужно загрузить файл с диска? прочитайте его как строку? и сериализовать json с помощью SwiftyJSON? –