hanshazairi
12/9/2017 - 5:07 AM

JSON

Create .json file and writing [String:String] data to it.

import FirebaseDatabase

let pathString = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!
let path = NSURL(string: pathString)!
let jsonPath = path.appendingPathComponent("test.json")
let fileManager = FileManager.default
var isDirectory: ObjCBool = false

if !fileManager.fileExists(atPath: jsonPath!.absoluteString, isDirectory: &isDirectory) {
  let created = fileManager.createFile(atPath: jsonPath!.absoluteString, contents: nil, attributes: nil)

  if created {
    print("File created.")

  } else {
    print("Unable to create file.")
  }
  
} else {
  print("File already exists.")
}

Database.database().reference().child("users").child("uid").observeSingleEvent(of: .value, with: { data in

  if let userData = data.value as? [String:String] {
    var jsonData: NSData!

    do {
      jsonData = try JSONSerialization.data(withJSONObject: userData, options: JSONSerialization.WritingOptions()) as NSData
      //let jsonString = String(data: jsonData as Data, encoding: String.Encoding.utf8)
    
    } catch let error as NSError {
      print("Error converting Dict to JSON: \(error.localizedDescription)")
    }

    do {
      let file = try FileHandle(forWritingTo: jsonPath!)
      file.write(jsonData as Data)
      print("JSON data successfully written to file.")
    
    } catch let error as NSError {
      print("Error writing to file: \(error.localizedDescription)")
    }
  }
})