Swift 3 NSCache 通用参数 'KeyType' 无法推断

Swift 3 NSCache Generic parameter 'KeyType' could not be inferred

此代码适用于 Swift 2.x:

/// An internal in-memory cache
private var dataCache = NSCache.init()

Swift3导致编译错误:

Generic parameter 'KeyType' could not be inferred

为什么会这样,我应该如何重构它(迁移工具没有选择它)?

  • 前 Swift 3 个测试版 NSCache 已更改为 Cache
  • 在最新的测试版(目前为 5)中,它已恢复为 NSCache

无论如何NSCache现在是通用的。

public class NSCache<KeyType : AnyObject, ObjectType : AnyObject> : NSObject { ...

所以最通用的语法是

private var dataCache = NSCache<AnyObject, AnyObject>()

不需要明确的 init()(甚至 Swift 2 中也不需要)