单击按钮不会将对象添加到缓存

Objects do not added to cache by clicking on button

我正在尝试使用简单的对象缓存。在这个例子中,我假设第一次点击按钮时,对象将被添加到缓存中,然后从缓存中获取它。但是每次单击按钮时,我都会收到一条消息,指出该对象已再次添加到缓存中,尽管它应该已经从缓存中取出了。

import SwiftUI

struct ContentView: View {
    var body: some View {
        Button(action: {
            let cache = NSCache<NSString, TestObject>()
            let myObject: TestObject
            if let cachedVersion = cache.object(forKey: "cachedObject") {
                print("Get cache")
                myObject = cachedVersion
            } else {
                print("Set cache")
                myObject = TestObject()
                cache.setObject(myObject, forKey: "cachedObject")
            }
        }, label: {
            Text("Cache it!")
        })
    }
}

class TestObject: Codable {
    var status: String = ""
    var totalResults: Int = 0
    var posts: String = "PostsObject"
}

而且我总是在控制台中收到 Set cache 消息。

哪里错了?

试试放

let cache = NSCache<NSString, TestObject>()

之外
var body: some View

如您所见,每次按下按钮都会创建一个新的缓存。