我有一个枚举
enum FilterType:String {
case UnitSoldFilter = "UnitSoldFilter"
case AmountFilter = "AmountFilter"
}
我想要一种方法,我想保存相应的值
func getFilterForType(filterFor:FilterForType) -> NSData? {
if let data: NSData = NSUserDefaults.standardUserDefaults().objectForKey(filterKey) as? NSData{
return data
}
return nil
}
但我收到错误,因为我们无法直接使用filterKey
。如何解决这个问题。
答案 0 :(得分:1)
两件事。
String
与{em>相对应的Enum
,如果它们是相同的字符串。 所以
enum FilterType:String {
case UnitSoldFilter = "UnitSoldFilter"
case AmountFilter = "AmountFilter"
}
变为
enum FilterType:String {
case UnitSoldFilter
case AmountFilter
}
然后在您的方法内部,您将使用rawValue
属性。
func getFilterForType(filterFor:FilterForType) -> NSData? {
if let data: NSData = NSUserDefaults.standardUserDefaults().objectForKey(filterKey.rawValue) as? NSData{
return data
}
return nil
}
这应该可以解决问题。
答案 1 :(得分:0)
这是因为filterKey
属于FilterType
类型,而不是String
。调用rawValue
属性以获取字符串:
func getFilterForType(filterKey:FilterForType) -> NSData? {
if let data: NSData = NSUserDefaults.standardUserDefaults().objectForKey(filterKey) as? NSData {
return data
}
return nil
}