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 <[email protected]> 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 <[email protected]> wrote:
>
>> On Thu, 11 Sep 2014 14:55:16 +0100
>> John Pollard <[email protected]> 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 ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/john%40pollardweb.com
>>
>> This email sent to [email protected]
>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.com
>
> This email sent to [email protected]
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]