如何在Swift中缓存双打数组

时间:2018-04-25 02:21:05

标签: ios swift

以下代码

let cache = NSCache<NSString, [Double]>()

给我错误:

'NSCache' requires that '[Double]' be a class type

如何使用String作为密钥缓存双打数组

3 个答案:

答案 0 :(得分:3)

正如其他人所提到的,NSCache是​​一个objC类型,只能用于NSObject子类。您可以使用类型桥接到NSArray中。

let cache = NSCache<NSString, NSArray>()
let doubleArray: [Double] = [2.0, 3.0, 4.0]
cache.setObject(doubleArray as NSArray, forKey: "key")

// ...

if let doubleArray = cache.object(forKey: "key") as? [Double] {
    // Got my array back
}

答案 1 :(得分:2)

NSCache处于Cocoa Objective-C世界,所以你必须遵循Cocoa Objective-C规则。例如,您可以将NSCache<NSString, NSArray>声明为* What went wrong: A problem occurred configuring project ':app'.

答案 2 :(得分:1)

这是一个如何做的例子

let cache = NSCache<NSString,NSArray>()

cache.setObject([NSNumber.init(value: 2.0),NSNumber.init(value: 3.0)], forKey: "value1")

print(cache.object(forKey: "value1")!)