答えは
let dict: [String: String?] = ["foo": "bar"]
NSCache().setObject(dict, forKey: "dict")
エラー: 引数の型 '[String : String?]' は、期待される型 'AnyObject' NSCache().setObject(dict, forKey: "dict") に準拠していません
protocol AnyObject { ... } すべてのクラスが暗黙的に準拠するプロトコル。辞書は構造体です
class C {}
let cls: C = C()
NSCache().setObject(cls, forKey: "cls")
しかし!!cls が nil になる可能性がある場合は、暗黙的に unwrap オプションを使用する必要があります。
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>
も構造体です!