Добавить всю строку в массив 2d - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь добавить целую строку к данным. Полный пример - это дикт 2d массива:

  1> var a: [String:[[Double]]] = [:] 
a: [String : [[Double]]] = 0 key/value pairs
  2> a["a"] = []
  3> a["a"].append([0.1, 0.2])
error: repl.swift:3:2: error: value of type '[[Double]]?' has no member 'append'
a["a"].append([0.1, 0.2])
~^~~~~ ~~~~~~

Как мне получить ["a":[[0.1, 0.2], [0.2, 0.3]]], если я не буду знать вЗаранее, что такое ключ «a», ни количество строк, ни их значения, до различных последующих точек выполнения?

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Поскольку a["a"] возвращает необязательный (поскольку в словаре может отсутствовать ключ "a"), вам необходимо использовать a["a"]?.append([0.1, 0.2]).

Другой вариант - указать значение по умолчанию:

a["a", default: []].append([0.1, 0.2])

Это даже устраняет необходимость в строке a["a"] = [].

1 голос
/ 23 апреля 2019

Причина, по которой вы получаете сообщение об ошибке, заключается в том, что вы пытаетесь добавить дополнительный файл. Измените его на a[“a”]?.append([0.1, 0.2])

Для ожидаемого результата вы должны сделать

var a: [String: [[Double]]] = [:]

a["a"] = []
a["a"]?.append([0.1, 0.2])
a["a"]?.append([0.2, 0.3])

И еще один способ сделать это

var a: [String: [[Double]]] = [:]

a["a"] = [[0.1, 0.2], [0.2, 0.3]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...