有没有一种方法可以在NSCache中存储一系列选项



我一辈子都想不出如何在NSCache中存储与可选项有关的任何内容。我可以理解,直接存储一个可选选项是没有意义的,但存储一个数组或字典,其中一些选项可能是可选的,这似乎是可能的。

然而,一个简单的例子并不奏效:

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

是我忽略了什么,还是真的没有办法做到这一点?

答案是

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

错误:参数类型"[String:String?]"不符合预期type‘AnyObject’NSCache().setObject(dict,forKey:"dict")

协议AnyObject{…}所有类隐式遵循的协议。Dictionary是一个结构

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

但是!!如果cls可以为nil,则必须使用隐式unwrap optional。

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>也是一个结构体!

最新更新