我有一个最多可容纳4个值的数组。该数组将始终有至少1个值,但其他3个可能为零。我必须将数组内的元素分配给类属性。Swift iOS -Get字典接受零值
问题是我遍历数组后,获取nil值,将它们分配给类属性,然后尝试将这些零属性分配给我的字典,我得到一个崩溃。
我需要字典接受带颜色的值并忽略零值。所以我有两个问题。
- 来自的确存在数组中的颜色上来的零在myDict
- 数组中的零值是例外
我如何去解决这个?
代码:
class ColorClass{
var colorOne:String?
var colorTwo:String?
var colorThree:String?
var colorFour:String?
}
let colorClass = ColorClass()
var randColors: [String?] = []
//In this case I have 2 colors but sometimes randColors may have 1 color or 3 colors or 4 colors. It will always vary
randColors = ["purple","pink"]
for (index,element) in randColors.enumerate(){
switch index {
case 0:
if let elZero = element{
colorClass.colorOne = elZero
}
case 1:
if let elOne = element{
colorClass.colorTwo = elOne
}
case 2:
if let elTwo = element{
colorClass.colorThree = elTwo
}
case 3:
if let elThree = element{
colorClass.colorFour = elThree
}
default:
break
}
}
var myDict = [String:AnyObject]()
myDict.updateValue(colorClass.colorOne!, forKey: "firstKey")
myDict.updateValue(colorClass.colorTwo!, forKey: "secondKey")
myDict.updateValue(colorClass.colorThree!, forKey: "thirdKey")
myDict.updateValue(colorClass.colorFour!, forKey: "fourthKey")
的崩溃发生在:
myDict.updateValue(colorClass.colorThree!, forKey: "thirdKey")
myDict.updateValue(colorClass.colorFour!, forKey: "fourthKey")
对象'[字符串:AnyObject] '不能在里面有任何'nil'值。但是'[String:AnyObject?]'可以。因此,请尝试更改myDict的签名,使其看起来像'var myDict = [String:AnyObject?]()'...那么如果您需要它为零,则可以简单地编写'myDict.updateValue(nil,forKey: “yourKey”)' – mutantkeyboard
@突变键盘感谢您的帮助。我试过你的解决方案,但它没有奏效。我将dict声明更改为var myDict = [String:AnyObject?]()。另外,我刚刚意识到实际存在的2个颜色值显示为零值。 –
字典中的“nil”值意味着相应的密钥丢失。一个声明'[String:AnyObject?]'是无稽之谈。 – vadian