Eloy Duran
eloy.****@gmail*****
Fri Mar 2 00:07:06 JST 2007
Nice work! Looks much better indeed. One thing though, I don't know if this is necessary, but should we also be able to pass a range to NSArray[] ? Right now it only supports a integer (index). Because it might be confusing to users that you are able to pass a index like in in ruby but not a range. What do you think? Eloy On 3/1/07, Laurent Sansonetti <lsans****@apple*****> wrote: > I profited of this to do a quick refactoring. The #to_a, #to_i and > #to_f methods in oc_wrapper.rb aren't really necessary anymore now (I > guess there were there for historical reasons). Also, in > oc_attachments*.rb, it's no longer needed to use sub modules as we can > add the methods on the fly directly to the right classes (which should > also be faster). > > Committed as r1610. > > Laurent > > On Mar 1, 2007, at 3:20 PM, Laurent Sansonetti wrote: > > > Good catch! The following patch fixes the problem (so you can call > > #to_a on an enumerator again): > > > > Index: framework/src/ruby/osx/objc/oc_wrapper.rb > > =================================================================== > > --- framework/src/ruby/osx/objc/oc_wrapper.rb (revision 1606) > > +++ framework/src/ruby/osx/objc/oc_wrapper.rb (working copy) > > @@ -66,14 +66,14 @@ > > end > > > > def to_a > > - if self.ocm_send(:isKindOfClass_, OSX::NSArray) != 0 then > > + if self.ocm_send(:isKindOfClass_, OSX::NSArray) > > ary = Array.new > > iter = self.ocm_send(:objectEnumerator) > > while obj = iter.ocm_send(:nextObject) do > > ary.push(obj) > > end > > ary > > - elsif self.ocm_send(:isKindOfClass_, OSX::NSEnumerator) != 0 > > then > > + elsif self.ocm_send(:isKindOfClass_, OSX::NSEnumerator) > > self.ocm_send(:allObjects).to_a > > else > > [ self ] > > > > Laurent > > > > On Mar 1, 2007, at 2:45 PM, Jacob Wallström wrote: > > > >> Hi Laurent, > >> > >> While preparing the demo for you I turned out to be mistaken. The > >> whole line looked like this: > >> > >> session.changeEnumeratorForEntityNames([syncName]).to_a > >> > >> The changeEnumeratorForEntityNames method returns a NSEnumerator. For > >> some reason the above call was working in RubyCocoa 0.4.3d2. Changing > >> the code to > >> > >> session.changeEnumeratorForEntityNames([syncName]).allObjects > >> > >> made it work in RubyCocoa 1.0 too. Sorry about that. > >> > >> /Jacob > >> > >> On 28 feb 2007, at 16.48, Laurent Sansonetti wrote: > >> > >> > >>> Hi Jacob, > >> > >>> > >> > >>> This is a weird problem. At a glance ISDChangeEnumerator is a valid > >> > >>> subclass of NSEnumerator so there is no reason why [- > >> > >>> objectEnumerator] > >> > >>> is called on it. Could you isolate this problem in a separate/ > >> > >>> distinct > >> > >>> project and send it to the list? I may be able to fix it if I can > >> > >>> reproduce it. > >> > >>> > >> > >>> Thanks! > >> > >>> Laurent > >> > >>> > >> > >>> On Feb 28, 2007, at 4:26 PM, Jacob Wallström wrote: > >> > >>> > >> > >>> > >> > >>> > >>>> I'm trying out RubyCocoa pre-1.0 from the unstable branch (rev. > >> > >>> > >> > >>> > >>>> 1600). One problem I have run into is the following: > >> > >>> > >> > >>> > >>>> > >> > >>> > >> > >>> > >>>> Exception thrown: Can't get Objective-C method signature for > >> > >>> > >>>> selector > >> > >>> > >> > >>> > >>>> 'objectEnumerator' of receiver #<OSX::ISDChangeEnumerator:0x39d032 > >> > >>> > >> > >>> > >>>> class='ISDChangeEnumerator' id=0x15cb3590> > >> > >>> > >> > >>> > >>>> /Checkedout/JacobDocs/GhostAction/trunk/GhostAction/build/ > >> > >>> > >> > >>> > >>>> Development/ > >> > >>> > >> > >>> > >>>> Ghost Action.app/Contents/Frameworks/RubyCocoa.framework/Resources/ > >> > >>> > >> > >>> > >>>> ruby/osx/objc/oc_wrapper.rb:63:in `ocm_send' > >> > >>> > >> > >>> > >>>> /Checkedout/JacobDocs/GhostAction/trunk/GhostAction/build/ > >> > >>> > >> > >>> > >>>> Development/ > >> > >>> > >> > >>> > >>>> Ghost Action.app/Contents/Frameworks/RubyCocoa.framework/Resources/ > >> > >>> > >> > >>> > >>>> ruby/osx/objc/oc_wrapper.rb:63:in `to_a' > >> > >>> > >> > >>> > >>>> > >> > >>> > >> > >>> > >>>> I get it when I make the following call: > >> > >>> > >> > >>> > >>>> > >> > >>> > >> > >>> > >>>> # session is a proper ISyncSession object > >> > >>> > >> > >>> > >>>> session > >> > >>> > >> > >>> > >>>> .changeEnumeratorForEntityNames(["com.apple.calendars.Calendar"]) > >> > >>> > >> > >>> > >>>> > >> > >>> > >> > >>> > >>>> The same code was working under 0.4.3d2 (I had imported the Sync > >> > >>> > >> > >>> > >>>> Services classes myself), but when trying with pre-1.0 I get the > >> > >>> > >> > >>> > >>>> error above. > >> > >>> > >> > >>> > >>>> > >> > >>> > >> > >>> > >>>> I'm grateful for any advice. > >> > >>> > >> > >>> > >>>> > >> > >>> > >> > >>> > >>>> Best regards, > >> > >>> > >> > >>> > >>>> Jacob Wallström > >> > >>> > >> > >>> > >>>> http://ghostparksoftware.com > >> > >>> > >> > >>> > >>>> > >> > >>> > >> > >>> > >>>> > >> > >>> > >> > >>> > >>>> _______________________________________________ > >> > >>> > >> > >>> > >>>> Rubycocoa-devel mailing list > >> > >>> > >> > >>> > >>>> Rubyc****@lists***** > >> > >>> > >> > >>> > >>>> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel > >> > >>> > >> > >>> _______________________________________________ > >> > >>> Rubycocoa-devel mailing list > >> > >>> Rubyc****@lists***** > >> > >>> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel > >> > >> _______________________________________________ > >> Rubycocoa-devel mailing list > >> Rubyc****@lists***** > >> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel > > > > _______________________________________________ > > Rubycocoa-devel mailing list > > Rubyc****@lists***** > > http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel > > _______________________________________________ > Rubycocoa-devel mailing list > Rubyc****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel >