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