Ios Swift-Switch语句不工作
我想在NSUserDefaults中存储UIColor。但是,这会导致一些问题,所以我想我可以将UIColor保存为字符串,以便转换回UIColor 我决定用switch语句来实现这一点:Ios Swift-Switch语句不工作,ios,xcode,swift,switch-statement,nsuserdefaults,Ios,Xcode,Swift,Switch Statement,Nsuserdefaults,我想在NSUserDefaults中存储UIColor。但是,这会导致一些问题,所以我想我可以将UIColor保存为字符串,以便转换回UIColor 我决定用switch语句来实现这一点: switch bc { case "UIColor.redColor()": blockColour = UIColor.redColor() case "UIColor.orangeColor()": blockColour = UIColor.orangeC
switch bc {
case "UIColor.redColor()":
blockColour = UIColor.redColor()
case "UIColor.orangeColor()":
blockColour = UIColor.orangeColor()
case "UIColor.blueColor()":
blockColour = UIColor.blueColor()
case "UIColor.greenColor()":
blockColour = UIColor.greenColor()
case "UIColor.blackColor()":
blockColour = UIColor.blackColor()
case "UIColor.grayColor()":
blockColour = UIColor.grayColor()
case "UIColor.purpleColor()":
blockColour = UIColor.purpleColor()
default:
println("ERROR!")
}
但是,我在每个案例行中都会出现错误,比如:
Type 'String' does not conform to protocol 'IntervalType'
我肯定这不是最有效的方法,也不是最简单的方法,但这是我唯一能想出如何在NSUserDefaults中保存UIColor的方法
有什么问题吗
编辑:显示如何定义bc的前面代码:
var bc : String!
var blockColour : UIColor!
var userDefaults = NSUserDefaults.standardUserDefaults()
if var blockColourString : AnyObject = userDefaults.valueForKey("blockColour") {
blockColourString = userDefaults.valueForKey("blockColour")
bc = blockColourString as String
}
else {
var blockColourString : AnyObject = "UIColor.orangeColor()"
userDefaults.setValue(blockColourString, forKey: "blockColour")
bc = blockColourString as String
}
userDefaults.synchronize()
这是一个副本,但副本没有swift等价物。以下是未经测试的: 一种方法可能是将其归档(就像使用NSColor一样,尽管我还没有对此进行测试): 为了找回它:
var color : UIColor?
if let colorData = NSUserDefaults.standardUserDefaults.objectForKey("myColor") as? NSData {
color = NSKeyedUnarchiver.unarchiveObjectWithData(colorData) as UIColor
}
您如何定义bc?为什么不存储UIColor?Franklin,请参阅我的编辑。Timur,尝试为key BlockColor插入非属性列表对象时出错?这不是重复的。问:我的车没开;我想它需要加油。A:坐公共汽车。是的,他应该为userDefaults()正确编码;加上这个作为答案;让海报决定他是否希望避免
切换/case
@GoZoner这是meta上没完没了讨论的A/B问题。问题是如何在用户默认值中存储颜色。答案是将它们存储为数据,而不是使用一些荒谬的技术将它们编码为字符串,提出一个关于switch语句不起作用的模糊问题,并帮助提问者继续不断地出错。提问者甚至说,我确信这不是最有效的方法,也不是最简单的方法,但这是我唯一能找出如何在NSUserDefaults中保存UIColor的方法。这就是这里要问的问题。
var color : UIColor?
if let colorData = NSUserDefaults.standardUserDefaults.objectForKey("myColor") as? NSData {
color = NSKeyedUnarchiver.unarchiveObjectWithData(colorData) as UIColor
}