If you didn't want to use a category, you could do: orderedSet = NSOrderedSet.orderedSetWithArray(["1", "2", "3"]) orderedSet.class.send(:define_method, :each) do self.array.each do |item| yield item end end
orderedSet.each do |item| puts item end This method also has the advantage of capturing local scope, if needed. hth kam On Nov 17, 2011, at 8:22 AM, techzen wrote: > The Cbjective-C way to handle this would be to put a category that provided > an `each` method on NSOrderedSet. Then when you called `each` it would just > work. Ruby has a similar functionality but I can't remember right now what > it's called. > > Using a category would be optimal in the case of Core Data because in some > instances you can actually evoke a method as part of a key path when sending > Key-Value messages. > > Shannon > > On Nov 16, 2011, at 4:11 AM, Jean-Denis MUYS wrote: > >> I have this ordered Core Data to-many relation named "operations" that I >> want to iterate over. I wrote: >> >> self.operations.each { | operation | operation.doSomething } >> >> However this fails because self.operations returns an NSOrderedSet and >> NSOrderedSet doesn't have an 'each' method. >> >> I was able to use the 'enumerateObjectsUsingBlock' method of NSOrderedSet >> which is working fine. >> >> My question is: what would be the MacRuby way to add an 'each' method to >> NSOrderedSet? >> >> Thanks, >> >> Jean-Denis >> >> >> >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel > > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel _______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel