Swift: массив словарей имеет счетчик 1 после инициализации, но должен иметь 0 [дубликаты]

var persons = [Dictionary<String, String>()]
println(persons.count)

печатает 1. Я вижу, что при инициализации массива внутри массива есть пустой словарь, но есть ли способ избежать этого и иметь 0 элементов вместо 1? Позже мне нужно сделать:

persons.append(["firstName": "Foo", "lastName": "Bar"])

Любые идеи?


person Upvote    schedule 04.11.2014    source источник
comment
Разве это не ответ на ваш предыдущий вопрос в stackoverflow.com/a/26735091/1187415? Вы правильно скопировали предложенный код?   -  person Martin R    schedule 04.11.2014
comment
@MartinR, вы правы, но, когда я писал этот вопрос, я думал, что это другая проблема. Мы можем закрыть это.   -  person Upvote    schedule 04.11.2014
comment
Я чувствую себя виноватым... это я ответил на другой вопрос, и я должен был это заметить, учитывая, что ответ почти такой же. @MartinR, как вы думаете, мне следует удалить свой ответ здесь?   -  person Antonio    schedule 04.11.2014
comment
@ Антонио Антонио, не совсем хорошо, тебе не нужно его удалять.   -  person Upvote    schedule 04.11.2014
comment
@Antonio: Вы больше не можете удалить ответ, потому что он был принят.   -  person Martin R    schedule 04.11.2014


Ответы (3)


Используя это:

[Dictionary<String, String>()]

вы создаете массив с одним элементом Dictionary<String, String>()

Правильный способ - переместить круглую скобку после квадратных скобок:

[Dictionary<String, String>]()

Это объявляет массив типа Dictionary<String, String> и создает его экземпляр.

Эквивалентный способ его создания:

Array<Dictionary<String, String>>()
person Antonio    schedule 04.11.2014

Просто поместите скобки снаружи:

var persons = [Dictionary<String, String>]()
person nicael    schedule 04.11.2014
comment
+1 Работает, спасибо! - person Upvote; 04.11.2014

Разве это не должно быть

var persons = Dictionary<String, String>()
println(persons.count)

or

var persons = [String : String]()
println(persons.count)

а не оба синтаксиса одновременно?

https://developer.apple.com/library/mac/documentation/General/Reference/SwiftStandardLibraryReference/Dictionary.html

person arieljuod    schedule 04.11.2014