gpt4 book ai didi

ios - 有没有办法在 NSCache 中存储一个可选数组?

转载 作者:行者123 更新时间:2023-11-29 01:22:37 25 4
gpt4 key购买 nike

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

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

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

是否有什么我忽略了或者真的没有办法做到这一点?

最佳答案

答案是

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

error: argument type '[String : String?]' does not conform to expected type 'AnyObject' NSCache().setObject(dict, forKey: "dict")

协议(protocol) AnyObject { ... }所有类都隐式遵守的协议(protocol)。字典是一个结构体

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

关于ios - 有没有办法在 NSCache 中存储一个可选数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34422496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com