objective c - Binding returns default value (set with registerDefaults:) instead of zero -
here's setup:
mytextfieldbound key in shared user defaults controller. user can enter numbers in text field.- each time application loads, load default preferences (from app's resources folder) using
[[nsuserdefaults standarduserdefaults] registerdefaults: ... ]. mymenuitem's title bound same key in shared user defaults controller.
the issue:
when mytextfield empty, mymenuitem receives default value loaded using registerdefaults: instead of value represents empty field (i expect 0 or nil).
for example, when nstextfield empty menu item receives "2", value loaded using registerdefaults:, instead of value means field empty.
if comment registerdefaults: code, binding returns nil expect when there nothing in nstextfield.
i tried mess around many of bindings' settings experiment placeholder values , looked @ cocoa bindings , user defaults docs not find solution.
expected behavior:
- when text field empty, want
mymenuitemreflect instead of using default value registered usingregisterdefaults:.
any appreciated.
i got hints nice folks @ irc.freenode.org #macdev , found following solution problem:
creating subclass of nsformatter (or nsnumberformatter in case) , overriding getobjectvalue:forstring:errordescription: follows overrides default behaviour of returning nil (which makes binding use registered default value) instead return 0 when text field empty.
- (bool)getobjectvalue:(id *)anobject forstring:(nsstring *)string errordescription:(nsstring **)error { if ([string isequaltostring:@""]) { *anobject = [nsnumber numberwithint:0]; return yes; } else { return [super getobjectvalue:anobject forstring:string errordescription:error]; } } a nsvaluetransformer subclass' reverse conversion method have worked this.
Comments
Post a Comment