ios - Swift - Switch 语句不起作用

标签 ios xcode swift switch-statement nsuserdefaults

<分区>

我想在 NSUserDefaults 中存储一个 UIColor。然而,这会导致一些问题,所以我想我可以将 UIColor 保存为 String 以转换回 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!")
    }

但是,我在每个案例行都遇到错误,说:

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,虽然我还没有测试过):

let colorData = NSKeyedArchiver.archivedDataWithRootObject(color)
NSUserDefaults.standardUserDefaults.setObject(colorData forKey:"myColor")

为了取回它:

var color : UIColor?
if let colorData = NSUserDefaults.standardUserDefaults.objectForKey("myColor") as? NSData {
    color = NSKeyedUnarchiver.unarchiveObjectWithData(colorData) as UIColor
}

关于ios - Swift - Switch 语句不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327687/

相关文章:

ios - 在 View 中查找所有 detailDislosureButtons

ios - 使用键盘使 UITableview 的底部向上移动

c# - 获取我的应用程序通过 openURL : 打开的文件的 URL

ios 8 ScrollView 切断内容的宽度

ios - 如何在不使用多个 webview 的情况下更改 webview 的 url

ios - 返回一个 Self 类型的数组

objective-c - 屏幕锁定时 AVAudioRecorder 不录制

ios - Xcode/iOS NSUserDefaults 行为奇怪

ios - 可以在 Mavericks (OS X 10.9) 上使用 XCode 5 为 iOS 6 开发吗?

ios - 如何快速将图像添加到我的表格单元格?