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@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

Reply via email to