That might not give you what you want.  committedSnapshot is set when the 
object is first mutated.  If you if the value is changed like:

null -> B -> null

Then this won’t log what is desired.

Chuck


On 2014-09-11, 12:28 PM, "Theodore Petrosky" wrote:

I have used the

@Override
public void willUpdate() {

)    method

then I get the original value and compare it

if (committedSnapshotValueForKey(PROJECT_DESCRIPTION_KEY) != 
NSKeyValueCoding.NullValue) {
setOldPD((String)committedSnapshotValueForKey(PROJECT_DESCRIPTION_KEY));

}

and in your case check for == NSKeyValueCoding.NullValue

does that do what you want?

Ted


On Sep 11, 2014, at 3:20 PM, John Pollard 
<j...@pollardweb.com<mailto:j...@pollardweb.com>> wrote:

Ray,

Thanks for the thought. I do want to log the stack trace but as I can't predict 
when this issue might happen and it is rare. I want to narrow down to the close 
circumstances first, or else I will be logging thousands of these stack traces 
in normal operation when there isn't a problem. What I need to do is detect 
when a given attribute is changed from non-null to null (which should never 
happen), so I need to check what it was before it is being set i.e. just check 
it was non-null before being set to null.

John

On 11 Sep 2014, at 18:05, Ray Kiddy 
<r...@ganymede.org<mailto:r...@ganymede.org>> wrote:

On Thu, 11 Sep 2014 14:55:16 +0100
John Pollard <j...@pollardweb.com<mailto:j...@pollardweb.com>> wrote:

Hi List,

In some debugging within takeValueForKey() I want to find out if the
key already has a value set. If I call valueForKey() or
storedValueForKey() and the value isn't already set I get infinite
recursion as it triggers a fault and tries to load with
takeValueForKey() and so on.

I am trying to debug where a value is being set to null, but
apparently not going via validateXXX() or setXXX() methods, so I want
to trap the case where the takeValueForKey() is passed null when the
key value was previously non-null and log a stack trace.

Thanks
John

One way to prevent the recursion you are talking about is to actually
look at the stack trace inside the method. Call the static method in
Wonder, ERXUtilities.stackTrace(), and look at what is in it. If you
find the method you are in, you have already been called.

Without Wonder, you can instantiate a Throwable and get the stack trace
from that.

Doing this is a smell. You do not want to leave this in your code.

But since you are putting this in to find something, having this check
there temporarily can be useful.

- ray



_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/john%40pollardweb.com

This email sent to j...@pollardweb.com<mailto:j...@pollardweb.com>


_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.com

This email sent to tedp...@yahoo.com<mailto:tedp...@yahoo.com>

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to