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

时间:2016-08-10 15:08:11

标签: ios swift swift3

此代码适用于Swift 2.x:

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

Swift 3 中会导致编译错误:

Generic parameter 'KeyType' could not be inferred

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

1 个答案:

答案 0 :(得分:40)

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

无论如何public class NSCache<KeyType : AnyObject, ObjectType : AnyObject> : NSObject { ... 现在是通用的。

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

所以最通用的语法是

init()

不需要显式的var query = from area in db.res_areas_sucursal join mesa in db.res_mesas_sucursal on area.area_gkey equals mesa.area_gkey select new { area, mesa } ; return query; (即使在Swift 2中也没有)