Value must be a pointer when passed value_to_pointer = Pointer.new(:object) value_to_pointer.assign(value) Regards, - Rob On 2011-06-28, at 12:08 PM, Eloy Duran <eloy@dekleineprins.me> wrote:
I have no experience with Core Data, but if you are looking to make repetitive work easy then don't forget about the metaprogramming possibilities with Ruby. Taking your example, you could create class method like the following:
class Model def self.core_data_accessor(name) class_eval(%{ def add#{name}Object(value) changedObjects = NSSet.setWithObject(value) willChangeValueForKey('#{name}', withSetMutation:NSKeyValueUnionSetMutation, usingObjects:changedObjects) primitiveValueForKey('#{name}').addObject(value) didChangeValueForKey('#{name}', withSetMutation:NSKeyValueUnionSetMutation, usingObjects:changedObjects) end }) end
core_data_accessor 'SubFolders' core_data_accessor 'OtherFolders' # etc end
HTH
On Tue, Jun 28, 2011 at 5:55 PM, Shannon Love <techzen@me.com> wrote:
I'm not to the point of wiring up the UI yet. I will employ bindings when I do so but at the moment I am creating a complex data model using NSManagedObject subclasses with lots of customized behaviors. I do this all the time in Objective-c but I am uncertain how to go about doing so in MacRuby. The @dynamic processor in Objective-C 2.0 autogenerates attribute and relationship accessors except for the to-many relationship convenience methods but obviously MacRuby has no such capability. I don't think the `attr_accessor ` in ruby will generate the proper core data accessors. I suppose my real question is: Do we have to write all the accessors like we used to do in the early days of Core Data in Objective-s 1.0 or is there some functionality in ruby or MacRuby that obviates the need to do so? Thanks, Shannon
On Jun 27, 2011, at 5:55 PM, Matt Aimonetti wrote:
Hey Shannon, I'm not sure I fully understand, but you should be able to just set the accessor and do the binding via Xcode as shown here: http://ofps.oreilly.com/titles/9781449380373/_core_data.html Let me know if that doesn't answer your question. - Matt
On Mon, Jun 27, 2011 at 3:45 PM, Shannon Love <techzen@me.com> wrote:
Howdy,
I've Core Data a lot in Objective-c and now I am trying to use it in MacRuby. It occurs to me that I might need to create the to-many relationship accessors just like you have to do in Objective-C.
To clarify: Suppose I have a data model that models a file structure and which looks like this:
Folder{ name:string parent<<-->Folder.subFolders subFolders<-->>Folder.parent files<-->>File.folder } File{ name:string folder<<-->Folder.file }
In Objective-C, I would normally have methods in the `Folder` class that would look like:
addSubFoldersObject: removeSubFoldersObject: addSubFoldersObjects: removeSubFoldersObjects:
The methods themselves would use look something like:
- (void)addSubFoldersObject:(FetchedPropertyExtractor *)value { NSSet *changedObjects = [[NSSet alloc] initWithObjects:&value count:1]; [self willChangeValueForKey:@"SubFolders" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects]; [[self primitiveValueForKey:@"SubFolders"] addObject:value]; [self didChangeValueForKey:@"SubFolders" withSetMutation:NSKeyValueUnionSetMutation usingObjects:changedObjects]; [changedObjects release]; }
Do you have to do the same thing in MacRuby or will the normal ruby set operations suffice? Thanks, Shannon Love a.k.a TechZen
_______________________________________________ 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
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel