gpt4 book ai didi

ios - 在 NSCache 中存储结构的任何方式

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:45 24 4
gpt4 key购买 nike

有没有办法在 NSCache 中存储结构值?当我阅读苹果文档时,看起来你只能将 AnyObject 存储到它。有几个解决方法,一个是将 sturct 转换为类,第二个是将 sturct 值转换为字典,但如果数据集很大,它们是非常昂贵的操作。有什么建议吗?

最佳答案

我打算冒险拒绝(没有变通办法)。 NSCache 在运行时的 Objective-C 端完全结束,编写为与 NSObject 一起工作,通过 AnyObject 桥接。与 NSDictionaryNSArray 不同,没有编译器可以桥接的等效 Swift 集合。

抛开实现要点:NSCache 根本不存在于一个理解比 C 原子更复杂的值语义的世界中。

也就是说,可能最简单的解决方法就是为您的结构创建一个对象容器,使桥接显式但由任何想要使用缓存的人拥有:

class YourStructHolder: NSObject {
let thing: YourStruct
init(thing: YourStruct) {
self.thing = thing
}
}

cache.setObject(YourStructHolder(thing: thing), forKey:"Whatever")
(cache.objectForKey("Whatever") as? YourStructHolder)?.thing

... 或者跳过 init 并使用 var ...: YourStruct? 如果您对可变性感到满意。无论如何,在与缓存对话时,您将不得不处理可选性。

关于ios - 在 NSCache 中存储结构的任何方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33282502/

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