Swift generics doesn't work as expected with JSON dictionary came from Objective-C parser -
i have function retrieve non optional value json dictionary. takes 3 params: dictionary, key , default value case no value in dictionary or value have wrong type
func valuefromjsondict<t>(dict:[nsobject: anyobject]?, key: nsobject, defaultvalue: t) -> t { if let value = dict?[key] as? t { return value } return defaultvalue } the problem returns default value.
title = valuefromjsondict(dict, "title", "") but if same thing without generics works fine:
title = { () -> string if let value = dict?["title"] as? string { title = value } else { return "" } }() this parsed json dict coming objective-c parser , if println dynamictype of value dict __cfnsstring, t.self swift.string, swift unable figure out types probably
how make work?
what dict object like?
here suggest:
typealias jsonobject = [string: anyobject] func valuefromjson<t>(json: jsonobject?, key: string, defaultvalue: t) -> t { if let value = json?[key] as? t { return value } return defaultvalue } let json = ["name": "sir lancelot", "quest": "to seek holy grail", "favorite color": "blue..."] let name = valuefromjson(json, "name", "sir not appearing in film")
Comments
Post a Comment