Конвертировать массив CGPoint в строку в Swift - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть массив точек, таких как:

[(32.33332824707031, 237.0), (105.33332824707031, 355.3333282470703), (124.0, 355.3333282470703), (165.3333282470703, 240.0), (116.33332824707031, 199.66665649414062)]

Я создал словарь из этого массива как

let dic : Dictionary<String, [CGPoint]> = [ "ARRAY" : points]

Я создаю jsondata для создания строки json, как показано ниже

let jsonData = try? JSONSerialization.data(withJSONObject: dic, options: .prettyPrinted)

Но я получаю сообщение об ошибке:

Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Недопустимый тип при записи JSON (NSConcreteValue)».

1 Ответ

1 голос
/ 03 февраля 2020

Кортежи не кодируются, но CGPoint поддерживает либо исходный массив CGPoint, если он у вас есть, либо отображает массив из кортежа в CGPoint

let points = array.map {CGPoint(x: $0.0, y: $0.1)}

let dic : Dictionary<String, [CGPoint]> = [ "ARRAY" : points]
do {
    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted

    let data = try encoder.encode(dic)
    print(String(data: data, encoding: .utf8)!)
} catch {
    print(error)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...