Advertisement
Guest User

Untitled

a guest
Oct 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. class GCDDataManager {
  2. var data: [[String : String]]
  3. var queue: DispatchQueue
  4. init(_ dataForFile: [[String : String]], _ queueForFiles: DispatchQueue) {
  5. data = dataForFile
  6. queue = queueForFiles
  7. }
  8.  
  9. let file = "data.json"
  10.  
  11. func writeData() -> Bool{
  12. var success: Bool
  13. success = false
  14. queue.sync(flags: .barrier) {
  15. guard let documentDirectoryUrl = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { return }
  16. let fileUrl = documentDirectoryUrl.appendingPathComponent(file)
  17. do {
  18. let data = try JSONSerialization.data(withJSONObject: self.data, options: [])
  19. try data.write(to: fileUrl, options: [])
  20. success = true
  21. } catch {
  22. print(error)
  23. }
  24. }
  25. return success
  26. }
  27.  
  28. func readData() -> [[String : String]]? {
  29. var success: Bool
  30. success = false
  31. var data: [[String : String]]
  32. data = [["" : ""]]
  33. queue.sync(flags: .barrier) {
  34. let fileUrl = Bundle.main.path(forResource: "data", ofType: "json”)
  35.  
  36. // Read data from .json file and transform data into an array
  37. do {
  38. let data = try Data(contentsOf: fileUrl, options: [])
  39. guard (try JSONSerialization.jsonObject(with: data, options: []) as? [[String: [String: String]]]) != nil else { return }
  40. success = true
  41. } catch {
  42. print(error)
  43. }
  44. }
  45. if success {
  46. return data
  47. }
  48. else {
  49. return nil
  50. }
  51. }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement