Dictionary of swift classes with strings -
i have class identity , dictionary of instances of them strings keys. want access 1 of instances string , change of properties. i'm trying use switch statement access instances in dictionary depending on value of string.
class identity { let provider: string let uid: string? let token: string? let name: string? init(provider: string){ self.provider = provider self.uid = nil self.token = nil self.name = nil } } var identities = [string:identity]() identities["twitter"] = identity(provider: "twitter") identities["twitter"].uid = "131241241241" identities["twitter"].name = "@freedrull" let provider: string = "twitter" var i: identity? { switch provider { case "twitter": return identities["twitter"] identity? case "facebook": return identities["facebook"] identity? case "soundcloud": return identities["soundcloud"] identity? default: return nil } } if != nil { i.name = "tony" }
i error assigning i.name
"tony". need cast i
identity somehow? thought was.
you have declared i
optional:
var i: identity? // ...
so it's still optional. it's not identity. it's optional wrapping identity. can't do optional - until unwrap it. unwrap it, @ identity. have:
if != nil { i.name = "tony" }
instead:
if let = { i.name = "tony" }
or:
if != nil { i!.name = "tony" }
both ways of unwrapping optional.
or, test , unwrap in 1 move:
i?.name = "tony"
then you'll have new problem; have declared name
constant. can't change constant! have:
let name: string?
instead:
var name: string?
[by way, of code redundant:
init(provider: string){ self.provider = provider self.uid = nil self.token = nil self.name = nil }
uid
, token
, , name
optionals, already nil. can cut 3 lines.]
Comments
Post a Comment