ios - Unwrap a tuple in swift -
this seems valid code me doesn't unwrap tuple
func updateuserdefaults<t>(data:t) { if let data = data as? (string, any) { println(data.1) } } updateuserdefaults(("loop", true)) my goal make generic setter nsuserdefaults. reason why use generic can pass in reactive code followed (next expects function of t->():
loop.producer |> map { ("loop", $0) } |> start(next: updateuserdefaults) update:
it seems seems work, unwraps , can provided 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() }
you using generic function , accessing parameter typed parameter.
surely function should be...
func updateuserdefaults(data: (string, any)) { println(data.1) } updateuserdefaults(("loop", true)) when using generics doesn't mean automatically know type schema of data pass in.
it means doesn't know schema of data pass in doesn't , shouldn't care.
also, parameter data not optional there isn't need unwrap it.
you can't "unwrap" generic parameter known type. doesn't work way.
Comments
Post a Comment