Добавление новых массивов в каталог документов - PullRequest
0 голосов
/ 26 ноября 2018

Я сохраняю массив координат в каталоге документов.

Чтобы добавить дополнительные массивы координат, я создал массив массивов, внутренний массив которого содержит словари координат).

Таким образом, при первом сохранении содержимое будет выглядеть следующим образом:

[
   [
      {
         "lat":123,
         "long":-0.123
      },
      {
         "lat":234,
         "long":-0.234
      }
   ]
]

При последующих сохранениях я добавлю новые группировки координат.

Как добавить этот массивв каталоге документов, чтобы он мог выглядеть как действительный JSON, например:

[
   [
      {
         "lat":123,
         "long":-0.123
      },
      {
         "lat":234,
         "long":-0.234
      }
   ],
   [
      {
         "lat":345,
         "long":-0.345
      }
   ]
]

Например.Должен ли я прочитать содержимое каталога документов и вставить новый массив, а затем перезаписать исходный файл (я не хочу этого делать, так как файл очень быстро станет большим).

Или есть способдобавить непосредственно в файл?

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете попробовать

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        let str = """
            [
                [
                    {
                    "lat":123,
                    "long":-0.123
                    },
                    {
                    "lat":123,
                    "long":-0.123
                    }
                ]
            ]

          """


        let appendedStr = """

            [
                {
                "lat":123,
                "long":-0.123
                },
                {
                "lat":123,
                "long":-0.123
                }
            ]


        """

        do {

            var res = try JSONDecoder().decode([[Root]].self, from: str.data(using: .utf8)!)

            print(res)

            let app = try JSONDecoder().decode([Root].self, from: appendedStr.data(using: .utf8)!)

            res.append(app)

            print(res) 

            let dataToStore = try JSONEncoder().encode(res)

            print(dataToStore)
        }
        catch {

            print(error)
        }

    }
}

struct Root: Codable {
    let lat: Int
    let long: Double
}

Вывод

[[dsdsd.Root (lat: 123, long: -0.123), dsdsd.Root (lat: 123, long): -0.123)]]

[[dsdsd.Root (широта: 123, long: -0.123), dsdsd.Root (широта: 123, long: -0.123)], [dsdsd.Root (lat:123, длинный: -0.123), dsdsd.Root (широта: 123, длинный: -0.123)]]

109 байт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...