[MacRuby-devel] Would a macruby-newbie List Be Worthwhile?

Laurent Sansonetti lsansonetti at apple.com
Wed Dec 16 15:40:43 PST 2009


On Dec 16, 2009, at 2:25 PM, Brian Chapados wrote:

> On Wed, Dec 16, 2009 at 9:11 AM, steve ross <cwdinfo at gmail.com> wrote:
>> On Dec 16, 2009, at 1:07 AM, John Shea wrote:
>>>
>>> The second part, filling with data (presumably you will only need  
>>> to do this once, because then the data can be saved with the app).
>>> There are many ways to add data.
>>>
>>> The easiest I reckon, is to add a method to the AppDelegate -  
>>> called applicationDidFinishLaunching(notification) (delegated from  
>>> the application singleton) and in that method you can do something  
>>> like:
>>> new_student = NSEntityDescription.insertNewObjectForEntityForName 
>>> ("Student", inManagedObjectContext:self.managedObjectContext).
>>> Then set the attributes for that obj, eg student.name = "Bill".
>>
>> Let me be more specific about *why* this is important to me. My app  
>> goes out to a Web Service for data, so I have to fill some of it in  
>> programmatically, then it refreshes only occasionally. I decided  
>> this would be best in the controller, so it could be triggered by  
>> the user. To emulate that, I wanted to prepopulate the  
>> managedObject collection, and that I did in awakeFromNib. Warning:  
>> Make sure to call super! So what it boiled down to what this method  
>> in the controller:
>>
>>  def new_image(image = {})
>>    object = NSEntityDescription.insertNewObjectForEntityForName 
>> ("Image",
>>      inManagedObjectContext:managedObjectContext)
>>    object.setValue image[:fileid], forKey: 'fileid'
>>    object.setValue image[:title], forKey: 'title'
>>    puts "#{object} #{object.fileid} : #{object.title}"
>>  end
>>
>> I used the setters explicitly when I was confused about why the  
>> bound tableview was blank. I'm beginning to get this a bit more  
>> under control, but the IB/CoreData/Cocoa Bindings is even magical  
>> to a Ruby person :)
>>
>> See? I told you it was a dumb question.
>>
>> Thanks,
>>
>> Steve
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>
>
> If MacRuby is your first exposure to mac programming and all of the
> associated tools and techniques, starting out by jumping into an
> IB-based project that uses CoreData & Bindings is going to be really
> confusing.
>
> I'd break up the tasks into pieces small enough that you can actually
> understand what's going on. You shouldn't feel like things are
> happening "magically". If that is the case, then try to take a step
> back and figure out how the magic trick works.
>
> For example, if you want to tackle CoreData first, then start with
> just CoreData.  Build a command-line program that creates a CoreData
> stack by reading in your compiled .xcdatamodel (or create the model in
> code!), add some data, and save it.  Once you've got that working,
> then make it download data from your web service and save it.
>
> Here is the approach I would take:
>
> 1. If you haven't already, read through the Core Data Programming  
> guide:
> http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html
>
> At the very least, browse through this to get a feel for what's going
> on.  You won't understand everything, but at least you'll have some
> sense of where to look when you get stuck.
>
> 2. Read the Core Data Utility tutorial:
> http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CoreDataUtilityTutorial/Articles/00_introduction.html
>
> This gives you a basic Obj-C version of a program the uses CoreData
> entirely through the API.  Everything is done in code, even creating
> the model, so it should get you started on something basic.
>
> 3. As it turns out, Matt Gallagher (cocoawithlove.com) recently posted
> an excellent article on parsing CSV files and importing the data into
> CoreData: http://cocoawithlove.com/2009/11/writing-parser-using-nsscanner-csv.html
>
> I highly recommend you also download and read through his code to see
> how it works.
>
> 4. Use the code from #2 & #3 to write a minimal implementation in
> MacRuby that imports data into your model.
>
> 5. After getting #4 to work, go back and read the section on
> efficiently importing data in the CoreData programming guide and
> refactor your import code appropriately.
>
> At least this way, if you get stuck on #4 & #5, you'll have a fairly
> short, self-contained example program that you can put in a gist, post
> a link, and ask for help on specific parts.
> _________________________________

And 6. Once you believe you understand how everything works, submit a  
sample code to us! :-)

Laurent


More information about the MacRuby-devel mailing list