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
|