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 中也不需要)
此代码适用于 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 中也不需要)