Paul,

I never used and didi not even known the existence of 
ERXGenericRecord.valueForKey(). The problem with these powerful ERXKey is that 
some operator will reduce a collection and some will create a collection. There 
is no way to infer these results with the current way they are done (using 
generics). I see no way to make the ERXGenericRecord.valueForKey() type to work 
all the time.

For simple key this may works but with key path, things get very complex.

For exemple traversing 2 toMany relationships will return an array of array of 
the final type that can be reduced to a single level array using atFlatten() 
and this one to a single object with atObjectAtIndex(index) or atMax(), ...

A new method could be added to return a new no-op  key with the NSArray version 
of the type to use with ERXGenericRecord.valueForKey() if required. As I do not 
know where ERXGenericRecord.valueForKey is used, I cannot comment on this.

This complexity may explain the proposition to have a native equivalent in 
Swift, they probably want make sure it will always works by having a better 
knowledge of the effect of operations chain.

Samuel



> Le 29 mars 2017 à 19:40, Paul Hoadley <pa...@logicsquad.net> a écrit :
> 
> On 29 Mar 2017, at 09:19, Paul Hoadley <pa...@logicsquad.net> wrote:
> 
>> Anyone else got any thoughts on all this?
> 
> 
> I see it was discussed on the old Wonder list back in 2009. Dave Avendasora 
> asked the exact question I asked:
> 
>> Since this is a to-many relationship shouldn't it be 
>> "ERXKey<NSArray<ScheduledRoutingRelationship>>"?
> 
> 
> And Mike Schrag answered:
> 
>> no it just doesn't really work this way ... if it did this, it's easy to 
>> extend it to add the array, but it's impossible to deconstruct it to get the 
>> inner type.  there are methods to extend keys, etc with array variants for 
>> most operations, but you rarely actually want the type of the key to be 
>> NSArray<T>
> 
> 
> Along with Samuel’s observations, seems like case closed. It does still seem 
> to leave ERXGenericRecord.valueForKey(ERXKey<T> key) broken in the case of 
> to-many relationship ERXKeys, though, doesn’t it? (Worse, it will break at 
> runtime.)
> 
> 
> -- 
> Paul Hoadley
> http://logicsquad.net/
> 
> 
> 
> _______________________________________________
> 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/samuel%40samkar.com
> 
> This email sent to sam...@samkar.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