This seems valid code to me but it doesn't unwrap the tuple
func updateUserDefaults<T>(data:T) {
if let data = data as? (String, Any) {
println(data.1)
}
}
updateUserDefaults(("loop", true))
my goal is to make this a generic setter for NSUserDefaults. The reason why i use a generic is so i can pass it easily in my reactive code as followed (next expects a function of T->():
loop.producer |> map { ("loop", $0) } |> start(next: updateUserDefaults)
UPDATE:
it seems that this seems to work, it unwraps and can be provided as T->()
func updateUserDefaults<T>(data:(String, T)) {
if let value = data.1 as? Bool {
userDefaults.setBool(value, forKey: data.0)
} else if let value: AnyObject = data.1 as? AnyObject {
userDefaults.setObject(value, forKey: data.0)
}
userDefaults.synchronize()
}