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中也是如此)