Init DictionaryLiteral без данных - PullRequest
       1

Init DictionaryLiteral без данных

0 голосов
/ 06 ноября 2018

Я хотел бы инициировать объект Swift DictionaryLiteral без каких-либо данных.

Например:

var withoutData: DictionaryLiteral = [String: [RealmObject]]()

Однако, это создает ошибку Cannot convert value of type '[String : [RealmObject]]' to specified type 'DictionaryLiteral'

Но если я делаю то же самое с данными напрямую, это работает:

var withData: DictionaryLiteral = ["test": [RealmObject()]]

В чем причина этого? А как объявить пустую переменную DictionaryLiteral?

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

В первом примере вы создаете Dictionary, а затем пытаетесь инициализировать DictionaryLiteral с ним. Это два разных типа, отсюда и ошибка. Вы можете использовать () для создания DictionaryLiteral, но вы должны правильно указать тип, который вы создаете. A DictionaryLiteral с использованием String в качестве ключа и [RealmObject] в качестве значения определяется DictionaryLiteral<String, [RealmObject]>.

Во втором примере вы предоставляете фактический словарь литерала, поэтому Swift может вывести тип как DictionaryLiteral<String, [RealmObject]>. Нет Dictionary на самом деле никогда не создается.

Таким образом, один из способов создания пустого DictionaryLiteral - полностью указать тип при его создании и позволить Swift определить тип переменной:

var withoutData = DictionaryLiteral<String, [RealmObject]>()

Другой способ - полностью указать тип данных переменной и затем инициализировать переменную пустым литералом словаря [:], как JonJ показывает в своем ответе .

0 голосов
/ 06 ноября 2018
var withoutData: DictionaryLiteral<String, [RealmObject]> = [:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...