Не удается присвоить значение типа (он же » Массив<Словарь>») (он же » Словарь>»)

#javascript #swift #dictionary

Вопрос:

Это мой код:

 override func style(node: Node) throws -gt; StyleNode {  guard let objectNode = try super.style(node: node) as? StyleNode  else {  throw UEErrors.unrecoverableError(message: "Could not create Node")  }   guard let stylesArray = node.stylesMap else {  throw UEErrors.unrecoverableError(message: "stylesMap is missing")  }  objectNode.stylesMap = stylesArray //error : Cannot assign value of type '[[StyleID : Style]]' (aka 'Arraylt;Dictionarylt;String, Stylegt;gt;') to type '[StyleID : Style]' (aka 'Dictionarylt;String, Stylegt;')  return objectNode  }  

Примечание: var stylesMap: [[StyleID: Style]]? Как мне создать словарь stylesArray ? (Я думаю, что карта в javascript-это словарь в swift)

Я пытаюсь перенести код javascript в swift. Ниже приведен код javascript:

 static style(  node: Node,  baseProps: BaseConstructorProperties,  ): this {  const stylesArray = assertNonNull(  Node?.stylesMap,  'stylesMap is missing',  );   return new this({  ...baseProps,  stylesMap: new Map(stylesArray),  });  }  

Комментарии:

1. В настоящее время у вас есть массив [StyleID : Style] , который вы пытаетесь установить в свойство, принимающее одно значение этого типа. Предположительно, вам нужно решить, какой товар вы хотите. Первый из них?

2. @jnpdx да, первый

Ответ №1:

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

 objectNode.stylesMap = stylesArray  

с:

 guard let first = stylesArray.first else {  throw UEErrors.unrecoverableError(message: "No items") } objectNode.stylesMap = first  

Комментарии:

1. Если я хочу вернуть второе, я должен использовать stylesArray.last?

2. Если бы в нем было только два пункта, да. Или stylesArray[1] (убедитесь, что вы сначала не вышли за пределы длины массива-доступ по индексу приведет к сбою, если вы выйдете за пределы длины массива)

3. Что, если я захочу вернуть диктофон?

4. [StyleID : Style] это словарь