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

此代码在Swift 2.x中工作:

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

Swift 3中会导致编译错误:

 Generic parameter 'KeyType' could not be inferred 

为什么是这样,我应该如何重构这个(迁移工具没有select这个)?

  • 在第一个Swift 3 NSCache已经被改为Cache
  • 在最新的beta版(现在是5版)中,它已经被转换为NSCache

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

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

所以最一般的语法是

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

显式的init()是不需要的(即使在Swift 2中也是如此)