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