[MacRuby-devel] [MacRuby] #751: Objects instantiated as anonymous class by Bindings mechanism

MacRuby ruby-noreply at macosforge.org
Thu Jun 17 14:08:58 PDT 2010


#751: Objects instantiated as anonymous class by      Bindings mechanism
--------------------------------+-------------------------------------------
 Reporter:  wladjmir@…          |       Owner:  lsansonetti@…        
     Type:  defect              |      Status:  new                  
 Priority:  minor               |   Milestone:  MacRuby 0.6          
Component:  MacRuby             |    Keywords:                       
--------------------------------+-------------------------------------------
 there is a problem with bindings mechanism in MacRuby 0.6 :

 - create a new MacRuby Document based project

 - MyDocument.nib
         create a new ObjectController binded with File's Owner Content,
 model key path "dummy"

         create a new text field binded with ObjectController selection,
 model key path "name"

 - MyDocument.rb

 {{{
 class MyDocument < NSDocument
         attr_accessor :dummy

         def init
                 super

                 setDummy({"name"=>"dummy"})
                 puts "in init class of Hash is :
 #{@dummy.class.ancestors}"

                 return self
         end

         def windowNibName
                 'MyDocument'
         end

         # Document data representation for saving (return NSData)
         def dataOfType(type, error:outError)
                 puts "in save class of Hash is :
 #{@dummy.class.ancestors}"

                 return true
         end

         # Read document from data (return non-nil on success)
         def readFromData(data, ofType:type, error:outError)
                 return true
         end

         # Return lowercase 'untitled', to comply with HIG
         def displayName
                 fileURL ? super : super.sub(/^[[:upper:]]/) {|s|
 s.downcase}
         end
 end
 }}}


 bindings works, but when i try for to save the document, or already in the
 windowDidLoad (NSWindowController) method...

 {{{
 in init class of Hash is : [Hash, NSMutableDictionary, NSDictionary,
 Enumerable, NSObject, Kernel]
 in save class of Hash is : [#<Class:0x200577420>, Hash,
 NSMutableDictionary, NSDictionary, Enumerable, NSObject, Kernel]
 }}}

 of course if i try to serialize the object i obtain :

 {{{

 `fileWrapperOfType:error:': can't dump anonymous class #<Class:..........>
 (TypeError)
 }}}


 if i remove the bindings with text field all works again...well i mean no
 data in it, but at least the class of object remain the same

 as workaround i can create the hash via NSMutableDictionary.dictionary or
 in my case :

 {{{
 temp = YAML::load( NSString.alloc.initWithData(
 fileWrapper.regularFileContents,
 encoding:NSString.defaultCStringEncoding))
 @data = NSMutableDictionary.dictionary
 @data.setDictionary(temp)
 }}}

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/751>
MacRuby <http://macruby.org/>



More information about the MacRuby-devel mailing list