ios 如何知道NSCache是否为空?

vjhs03f7  于 2023-06-25  发布在  iOS
关注(0)|答案(1)|浏览(64)

如果我没猜错的话,没有办法知道存储在NSCache中的对象的数量,但是有没有办法知道该高速缓存是空的还是已经包含了任何对象?

kmynzznz

kmynzznz1#

这是一个有点古怪,但最近我发现自己遇到了类似的情况。
在我的例子中该高速缓存是一个私有的ivar,所以它是用一个setter方法加载的,这个方法允许我在为缓存设置对象时跟踪我使用的每个键。然后,迭代所有可能的对象以检查该高速缓存中仍有多少对象是一件简单的事情(这在应用程序中可能很有用,但同样只需要单元测试)。

private var elements = NSCache<NSString, AnyObject>()
private var keysUsedSoFar = Set<String>()

var count: Int {
    var count = 0
    for key in keysUsedSoFar where readers.object(forKey: key as NSString) != nil {
        count += 1
    }
        
    return count
}

func loadCache(element: AnyObject forKey key: String) {
    keysUsedSoFar.insert(key)
    elements.setObject(element, forKey: key as NSString)
}

相关问题