Ошибка синтаксического анализа файла TMX с Swift 2.1.1

Перед преобразованием моего проекта Xcode в Swift 2 у меня была следующая функция, которую я использовал для анализа файлов уровня TMX. Он предоставил переменную attributeDict для использования внутри функции.

func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject]) {

// my function code

}

После преобразования в Swift 2 (сейчас я использую 2.1.1), мне было предложено изменить его на функцию @objc и изменить некоторые синтаксисы. Теперь, когда переменная attributeDict была доступна внутри функции, теперь переменная не создается, оставляя многочисленные ошибки

@objc func parser(parser: NSXMLParser, didStartElement elementName: String?, namespaceURI: String?, qualifiedName qName: String?, attributes: attributeDict<NSObject,AnyObject>) {

// my function code

}

Должно быть, я неправильно изменил синтаксис, но из документации не могу понять, что я сделал неправильно. Надеюсь, это очевидно для кого-то еще. Любая помощь будет высоко ценится.

1 ответ

Решение

Конверсия провалила декларацию attributeDict, Измените этот бит обратно на то, что было раньше:

attributes attributeDict: [NSObject : AnyObject]

Обратите внимание, что вы можете обнаружить, что получили ошибку, если вам не разрешено использовать NSObject в качестве ключа для словаря (словарные ключи должны соответствовать Hashable) и вам, вероятно, следует пересмотреть тип ключей словаря.

Другие вопросы по тегам