Как добавить значения в словарь, содержащий 3 элемента в Swift 2.3?
Я пытаюсь добавить значение в словарь, который я объявил так.
var setHomIconDict:[(iconImg: UIImage, Operator: String, oprCode: String, oprMerchCode:String)]!
Я не уверен, что его словарь, хотя. Я учусь быстро, и я нашел интересный код в сети. В любом случае, я не совсем понимаю, как мне добавить к этому значения. Я старался
setHomIconDict.append((iconImg:img!, Operator: "Strin", oprCode: "Hello", oprMerchCode: "Huja"))
Но я получаю эту ошибку: фатальная ошибка: неожиданно найден ноль при развертывании необязательного значения. вот изображение
Может кто-нибудь предложить подходящий способ.
3 ответа
Возможно, вам лучше создать структуру для хранения ваших значений. Тогда ваш массив будет массивом этой структуры.
struct homIcon {
var iconImg: UIImage
var Operator: String
var oprCode: String
var oprMerchCode:String
}
var setHomIconArray:[homIcon] = []
let newHomIcon = homIcon(iconImg: img!, Operator: "Strin", oprCode: "Hello", oprMerchCode: "Huja")
setHomIconArray.append(newHomIcon)
setHomIconDict
не является Dictionary
это массив кортежей, и вы получаете этот сбой, потому что вы не инициализировали setHomIconDict
объект, вы только что объявили его тип. Так что инициализировал его своей декларацией.
var setHomIconDict:[(iconImg: UIImage, Operator: String, oprCode: String, oprMerchCode:String)] = []
Примечание. Вместо создания массива кортежей лучшим решением будет создание одной пользовательской модели. Class
с собственностью, которую вы хотите set/access
, а затем создать массив этого обычая Class
объекты и использовать его.
Как говорит Нирав, используемый вами синтаксис создает массив кортежей. Если вы хотите словарь, избавьтесь от скобок.
Вы хотите определить пары ключ / значение, используя этот синтаксис:
var aDict = [key:value, key:value, key:value]
Затем вы можете добавить новые пары ключ / значение, используя:
aDict[newKey] = newValue
Ваша цель - создать и использовать словарь, или ваша цель - использовать и понимать структуру, которую вы нашли в сети?