これは私には有効なコードのようですが、タプルをアンラップしません
func updateUserDefaults<T>(data:T) {
if let data = data as? (String, Any) {
println(data.1)
}
}
updateUserDefaults(("loop", true))
私の目標は、これを NSUserDefaults の汎用セッターにすることです。ジェネリックを使用する理由は、次のようにリアクティブ コードで簡単に渡すことができるようにするためです (次に T->() の関数が必要です:
loop.producer |> map { ("loop", $0) } |> start(next: updateUserDefaults)
アップデート:
これは機能しているようで、ラップを解除して 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()
}