有没有办法在NSCache中存储一组选项?

时间:2015-12-22 18:46:58

标签: ios swift cocoa-touch nscache

我不能为我的生活弄清楚如何在NSCache中存储与可选项有关的任何内容。我可以理解直接存储一个可选的没有意义,但是存储一个数组或字典,其中一些选项可能是可选的当然看起来应该是可能的。

然而,一个简单的例子不起作用:

let dict: [String: String?] = ["foo": "bar"]
NSCache().setObject(dict, forKey: "dict")

我有什么东西可以忽略,或者真的没有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

答案是

let dict: [String: String?] = ["foo": "bar"]
NSCache().setObject(dict, forKey: "dict")
  

错误:参数类型' [String:String?]'不符合预期   输入' AnyObject' NSCache()。setObject(dict,forKey:" dict")

协议AnyObject {...} 所有类隐式符合的协议。字典是一个结构

class C {}
let cls: C = C()
NSCache().setObject(cls, forKey: "cls")

但!!如果您的cls可以为nil,则必须使用隐式解包可选。

let cls: C? = C()
NSCache().setObject(cls, forKey: "cls")
//error: value of optional type 'C?' not unwrapped; did you mean to use '!' or '?'?
NSCache().setObject(cls, forKey: "cls")

所以你必须使用

let cls: C! = C()
NSCache().setObject(cls, forKey: "cls")

Optional<Type>也是一个结构!