ios - How can I get int values from the change dictionary in KVO method observeValueForKeyPath:ofObject:change:context:? -
i observing changes in rate
property of avplayer calling following method on so:
addobserver:sharedplayermanagerinstance forkeypath:@"rate" options:nskeyvalueobservingoptionnew|nskeyvalueobservingoptionold context:0];
the change
dictionary observevalueforkeypath:ofobject:change:context:
therefore:
change = { kind: 1, new: 1, old: 0 }
i checked class of each value, , turns out __nscfnumber. however, when try convert [change objectforkey:@"new"]
or [change objectforkey:@"old"]
int, nsinteger, nsnumber, tried nsstring, etc, works "old", gives me parsing error "new":
error: expected type error: 1 errors parsing expression
i need compare them, , can't figure out. bug in ios?
objective c
-(void)observevalueforkeypath:(nsstring *)keypath ofobject:(id)object change:(nsdictionary *)change context:(void *)context{ nsnumber * newvalue = [change objectforkey:nskeyvaluechangenewkey]; nsinteger integervalue = newvalue.integervalue; int intvalue = newvalue.intvalue; }
swift
override func observevalueforkeypath(keypath: string, ofobject object: anyobject, change: [nsobject : anyobject], context: unsafemutablepointer<void>) { if let newvalue = change[nskeyvaluechangenewkey] as? nsnumber{ let intvalue = newvalue.intvalue //to int } }
Comments
Post a Comment