swift - Get string from userInfo Dictionary -
i have userinfo dictionary uilocalnotification. there easy way string value when using implicit unwrapping?
if allow s = userinfo?["id"]
gives me anyobject have cast string.
if allow s = userinfo?["id"] string
gives me error stringliteralconvertable
just didn't want have declare 2 variables string - 1 literal disclose , var casted string.
edit
here method. doesn't work either - (nsobject, anyobject) not convertible string on if statement.
notification in schedulednotifications { // optional chainging allow userinfo = notification.userinfo if allow id = userinfo?[ "id" ] as? string { println( "id found: " + id ) } else { println( "id not found" ) } }
i don't have in question, besides getting way work, i'd have
if allow s = notification.userinfo?["id"] string
you want utilize condition cast using as?
:
(note: works xcode 6.1. xcode 6.0, see below)
if allow s = userinfo?["id"] as? string { // when here, know "id" valid key // , value string. }
this build safely extracts string userinfo
:
if userinfo
nil
, userinfo?["id"]
returns nil
due optional chaining , conditional cast returns variable of type string?
has value of nil
. optional binding fails , block not entered.
if "id"
not valid key in dictionary, userinfo?["id"]
returns nil
, proceeds previous case.
if value type (like int
), conditional cast as?
homecoming nil
, proceeds above cases.
finally, if userinfo
not nil
, , "id"
valid key in dictionary, , type of value string
, conditional cast returns optional string string?
containing string. optional binding if let
unwraps string
, assigns s
have type string
.
for xcode 6.0, there 1 additional thing must do. need conditionally cast nsstring
instead of string
because nsstring
object type , string
not. apparently improved handling in xcode 6.1, xcode 6.0 following:
if allow s:string = userinfo?["id"] as? nsstring { // when here, know "id" valid key // , value string. }
finally, addressing lastly point:
notification in schedulednotifications { if allow id:string = notification.userinfo?["id"] as? nsstring { println( "id found: " + id ) } else { println( "id not found" ) } }
dictionary swift optional
No comments:
Post a Comment