From: Rupert B. <rup...@fr...> - 2005-12-03 03:08:04
|
Hi, I've been spending most of the night trying to understand the following problem : I have Objective-C checking for changed objects like this : while (record = [recordEnumerator nextObject]) { NSLog(@"record changed=%@, class=%@, res=%@", [record valueForKey:@"changed"], [[record valueForKey:@"changed"] class], [record valueForKey:@"changed"] == @"YES"); if ([record valueForKey:@"changed"] == @"YES") [changedRecords addObject:record]; } NSLog(@"changedRecords=%@", [changedRecords description]); I have RubyCocoa code updating these objects like this : def changed @_changed end self.addRubyMethod_withType("changed".to_sym, "v@:@") def setChanged(v) @_changed = v end self.addRubyMethod_withType("setChanged:".to_sym, "v@:@") def setChangedYes setChanged(OSX::NSString.alloc.initWithString("YES")) end def setChangedNo setChanged(OSX::NSString.alloc.initWithString("NO")) end When I run the program, the traces from the Objective-C code show : record changed=YES, class=NSCFString, res=(null) record changed=YES, class=NSCFString, res=(null) record changed=YES, class=NSCFString, res=(null) record changed=YES, class=NSCFString, res=(null) record changed=YES, class=NSCFString, res=(null) changedRecords=() What is going on ? I have made every effort for the two ObjC and RubyCocoa strings be equal : same value ("YES"), same class (NSCFString); what else ? Why does the test if ([record valueForKey:@"changed"] == @"YES") never verify ? Thanks for any help, I'm going to bed %:( Rup |