[MacRuby-devel] [MacRuby] #473: setObjectValue does not set floats, integers in NSTextFields properly.

MacRuby ruby-noreply at macosforge.org
Sun Dec 6 19:15:18 PST 2009


#473: setObjectValue does not set floats, integers in NSTextFields properly.
-----------------------------------+----------------------------------------
 Reporter:  johnmacshea@…          |       Owner:  lsansonetti@…              
     Type:  defect                 |      Status:  new                        
 Priority:  major                  |   Milestone:                             
Component:  MacRuby                |    Keywords:  NSTextField, setObjectValue
-----------------------------------+----------------------------------------
Description changed by lsansonetti@…:

Old description:

> When using setObjectValue (NSControl) with MacRuby floats and integer,
> though they are a subclass of NSNumber,they are not properly set
> (copied?).
>
> For example in macirb:
> irb(main):001:0> framework "Cocoa"
> => true
> irb(main):002:0> tf = NSTextField.alloc.init
> => #<NSTextField:0x20024b5a0>
> irb(main):003:0> num = NSNumber.numberWithFloat(23.3)
> => 23.2999992370605
> irb(main):004:0> tf.setObjectValue(num)
> => #<NSTextField:0x20024b5a0>
> irb(main):005:0> p tf.stringValue
> "0"
> => "0"
> irb(main):006:0> p num.superclass.superclass
> NSNumber
> => NSNumber
> irb(main):007:0> tf.setFloatValue(23.3)
> => #<NSTextField:0x20024b5a0>
> irb(main):008:0> p tf.stringValue
> "23.29999923706055"
> => "23.29999923706055"
>
> or, more simply:
>
> irb(main):013:0> tf.setObjectValue(23.3)
> => #<NSTextField:0x20024b5a0>
> irb(main):014:0> p tf.stringValue
> "0"
> => "0"
>
> To contrast with proper behavior, with the following obj C code:
>
>   NSTextField *tf = [[NSTextField alloc] init];
>   NSNumber *num = [NSNumber numberWithFloat:23.3];
>   [tf setObjectValue:num];
>   NSLog(@"string value of tf %@", [tf stringValue]);
>

> results in the following:
>
> 2009-12-01 14:48:56.553 TextFieldSet[12012:a0f] string value of tf 23.3

New description:

 When using setObjectValue (NSControl) with MacRuby floats and integer,
 though they are a subclass of NSNumber,they are not properly set
 (copied?).

 For example in macirb:
 {{{
 irb(main):001:0> framework "Cocoa"
 => true
 irb(main):002:0> tf = NSTextField.alloc.init
 => #<NSTextField:0x20024b5a0>
 irb(main):003:0> num = NSNumber.numberWithFloat(23.3)
 => 23.2999992370605
 irb(main):004:0> tf.setObjectValue(num)
 => #<NSTextField:0x20024b5a0>
 irb(main):005:0> p tf.stringValue
 "0"
 => "0"
 irb(main):006:0> p num.superclass.superclass
 NSNumber
 => NSNumber
 irb(main):007:0> tf.setFloatValue(23.3)
 => #<NSTextField:0x20024b5a0>
 irb(main):008:0> p tf.stringValue
 "23.29999923706055"
 => "23.29999923706055"

 or, more simply:

 irb(main):013:0> tf.setObjectValue(23.3)
 => #<NSTextField:0x20024b5a0>
 irb(main):014:0> p tf.stringValue
 "0"
 => "0"
 }}}

 To contrast with proper behavior, with the following obj C code:

 {{{
   NSTextField *tf = [[NSTextField alloc] init];
   NSNumber *num = [NSNumber numberWithFloat:23.3];
   [tf setObjectValue:num];
   NSLog(@"string value of tf %@", [tf stringValue]);
 }}}

 results in the following:

 2009-12-01 14:48:56.553 TextFieldSet[12012:a0f] string value of tf 23.3

--

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/473#comment:1>
MacRuby <http://macruby.org/>



More information about the MacRuby-devel mailing list