Свифт, как я могу сделать Multimap (Java) - PullRequest
0 голосов
/ 14 мая 2018

Я начинаю разработку Swift и IOS, так что я очень новичок в этом, я делаю то, что хочу в Java (см. Пример), но я не могу найти, как это сделать в Swift, я хочу создать словарь на Swift,Я знаю, что могу сделать так:

var dict = Dictionary<String, Array<String>>()

var s1 = "one"
var s2 = "two"
var s3 = "three"
var root = "numbers"
dict[root] = [s1,s2,s3]

for str in dict
{
    print(str.value)
}

Но это не то, чего я хочу.Я делаю то же самое в Java, как это

final TreeMultimap<String, String> third1000multi = TreeMultimap.create(Ordering.<String>natural(), Ordering.<String>natural());
for (Word w : third1000) {
            third1000multi.put(w.getType(), w.getWord());
        }

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

  1. «выбрать» -> «выбор» (нет ключа «выбрать», поэтому создайте его и поместите его в «выбрав» значение выберите = = «выбор»])

2. "Выбрать" -> выбор (есть ключ с именем "выбрать", поэтому добавьте в него это значение. Выбор = ["выбор", "выбор"] Спасибо за вашу помощь :)

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете использовать аксессор Dictionary subscript(_:default:).

var dict = [String:[String]]()

var words = [ "one", "two", "three"]
var root = "numbers"

for word in words {
    dict[root, default: []].append(word)
}
print(dict)

Или более близко к вашему Java-коду:

var third1000multi = [String:[String]]()
for w in third1000 {
    third1000multi[w.type, default: []].append(w.word)
}
...