[英]Swift Extension For Generic type compiler error
我已经为NSData泛型类型创建了Cache类的扩展( https://github.com/aschuch/AwesomeCache )
第一种方法工作正常,但setIntegerValue显示编译器错误:“在行: self.setObject(data,forKey:forKey,过期:过期)
extension Cache where T: NSData {
func integerForKey(key: String) -> Int? {
if let data = self.objectForKey(key), string = String(data: data, encoding: NSUTF8StringEncoding), intValue = Int(string) {
return intValue
}
return nil
}
func setIntegerValue(integerValue: Int, forKey: String, expires: CacheExpiry = .Never) {
let stringValue = String(integerValue)
if let data = stringValue.dataUsingEncoding(NSUTF8StringEncoding) {
self.setObject(data, forKey: forKey, expires: expires)
}
}
}
我创建了不带扩展名的测试,效果很好:
let cache = try! Cache<NSData>(name: "MyCache")
let string = "foo"
if let data = string.dataUsingEncoding(NSUTF8StringEncoding) {
cache.setObject(data, forKey: "bar")
}
所以,我不知道发生了什么事? 谁能告诉我-怎么了?
问题在于data
是NSData,但是setObject
将T作为其第一个参数。 不是NSData。
的确,您已经为T:NSData
定义了此扩展名,但这对Swift无关紧要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.