2015-08-13 4 views
-3

У меня есть NSDictionary экземпляр так:Swift: Почему я не получаю массив из моего NSDictionary

var organizedUsers = [String: [User]]() 

Где Пользователь мой собственный класс. Это должно быть легко получить массив пользователей для определенной строки, не так ли?

Однако, когда я пытаюсь получить массив, я получаю полный словарь! Почему это?

Вот мой код:

var sortedKeys = [String]() 
sortedKeys = Array(organizedUsers.keys) 
organizedUsers[sortedKeys[section]!].count //This line has an error 
+0

Какая ошибка вы получаете? И откуда происходит «секция»? –

+0

Второе предложение оператора отбрасывает массив, созданный на линии выше. Вероятно, вы просто хотите объявить тип, а не создать экземпляр. – zaph

+0

Как правило, проще отлаживать и находить ошибки, если каждый оператор делает меньше. Нет ничего, что можно было бы избежать, избегая промежуточных операторов и переменных. – zaph

ответ

2

Вам нужно изменить строку:

organizedUsers[sortedKeys[section]!].count 

к

organizedUsers[sortedKeys[section]]!.count 

к может получить доступ к count собственности при условии, что section является Int конечно, чтобы индексировать по массиву, см. следующий e xample:

struct User { 
    var name: String 
} 

var organizedUsers = [String: [User]]() 
organizedUsers["User"] = [User(name: "Victor")] 

var sortedKeys = [String]() 
sortedKeys = Array(organizedUsers.keys) // ["User"] 
organizedUsers[sortedKeys[0]]!.count // 1 
Смежные вопросы