我希望在NSUserDefaults中存储UIColor。然而,这会导致一些问题,因此我想我可以将UIColor保存为字符串,以便再次转换为UIColor。
我决定使用switch语句来实现:
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!")
}
然而,每个case语句都报错,错误信息如下:
Type 'String' does not conform to protocol 'IntervalType'
我相信这不是最有效的方法或最简单的方法,但这是我能想到的唯一保存UIColor在NSUserDefaults中的方法。
问题是什么?
编辑:前面的代码显示了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()