В первом примере вы создаете Dictionary
, а затем пытаетесь инициализировать DictionaryLiteral
с ним. Это два разных типа, отсюда и ошибка. Вы можете использовать ()
для создания DictionaryLiteral
, но вы должны правильно указать тип, который вы создаете. A DictionaryLiteral
с использованием String
в качестве ключа и [RealmObject]
в качестве значения определяется DictionaryLiteral<String, [RealmObject]>
.
Во втором примере вы предоставляете фактический словарь литерала, поэтому Swift может вывести тип как DictionaryLiteral<String, [RealmObject]>
. Нет Dictionary
на самом деле никогда не создается.
Таким образом, один из способов создания пустого DictionaryLiteral
- полностью указать тип при его создании и позволить Swift определить тип переменной:
var withoutData = DictionaryLiteral<String, [RealmObject]>()
Другой способ - полностью указать тип данных переменной и затем инициализировать переменную пустым литералом словаря [:]
, как JonJ показывает в своем ответе .