I Erweiterung der Cache-Klasse für NSData generische Typ erstellt haben (https://github.com/aschuch/AwesomeCache)Swift Erweiterung für Generic Typ Compilerfehler
Erste Methode funktioniert gut, aber setIntegerValue zeigen Compiler-Fehler: „Kann nicht aufrufen 'setObject' mit ein Argumentliste vom Typ '(NSData, forKey: String, abläuft: CacheExpiry)'“in Zeile: self.setObject (Daten, forKey: forKey, abläuft: abläuft)
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)
}
}
}
ich habe Test ohne Verlängerung geschaffen welche funktioniert perfekt:
let cache = try! Cache<NSData>(name: "MyCache")
let string = "foo"
if let data = string.dataUsingEncoding(NSUTF8StringEncoding) {
cache.setObject(data, forKey: "bar")
}
Also, ich verstehe nicht, was passiert ist? Kann mir jemand sagen - was ist los?
'Erweiterung Cache wo T: NSData' - Ich dachte Swift erlaubt Protokolle nur in' Extension/Where' Typ Einschränkungen. Es wird nicht einmal mit 'NSData' funktionieren. – user28434