以下代码
let cache = NSCache<NSString, [Double]>()
给我错误:
'NSCache' requires that '[Double]' be a class type
如何使用String
作为密钥缓存双打数组?
答案 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")!)