FROM : George Stuart
DATE : Fri Jun 06 23:06:54 2008
On Jun 6, 2008, at 2:26 PM, Andrew Merenbach wrote:
> Quoting Ken Thomases <<email_removed>>:
>
>> On Jun 6, 2008, at 3:43 AM, George Stuart wrote:
>>
>>> NSSortDescriptor *desc = [[NSSortDescriptor alloc]
>>> initWithKey:nil ascending:NO
>>> selector:@selector(localizedCompare:)];
>>> NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors:
>>> [NSArray arrayWithObject:desc]];
>>> [desc release];
>>>
>>> That seems to work just fine... but I'm worried. I "guessed" at
>>> using the key of "nil" since I want the actual objects in the
>>> array to be the target for the @selector. Is it a fluke that
>>> this works? I don't want to rely on undefined behavior.
>>
>> Hmm. Good question. You could use @"description" as the key to
>> eliminate the uncertainty. Or maybe @"self".
>>
>> Cheers,
>> Ken
>>
>
> Hi,
>
> This may not be an option in every case, but would making a
> "wrapper" class for your strings work? It'd just be a basic class
> with an accessor/property and a corresponding ivar that would then
> be the sort key.
>
> Cheers,
> Andrew
Thanks very much for the responses! I'm leaning away from writing a
wrapper as I'd rather try and leverage the base objects as much as
possible. Adding a wrapper will add complexity -- every place a
string is inserted needs to be sure to first wrap the NSString in my
custom wrapper. It's a minor change, but would like to avoid this if
possible.
The suggestion of using a keyPath of @"self" presents another question:
1) I assume NSSortDescriptor is using valueForKeyPath:, which in
turns calls valueForKey: some number of times, to get the object for
the keyPath I specified. Is it defined behavior that sending an
object valueForKey:@"self" will return the object itself? I guess
this is ultimately the same as my original question, "is it defined
behavior that sending an object valueForKey:nil will return the object
itself?"
As for using a keyPath of @"description", I think this might be the
best way for NSString. I completely forgot about this option. The
docs say:
Returns the receiver.
- (NSString *)description
Duh... That's precisely what I need :).
Thanks,
George
DATE : Fri Jun 06 23:06:54 2008
On Jun 6, 2008, at 2:26 PM, Andrew Merenbach wrote:
> Quoting Ken Thomases <<email_removed>>:
>
>> On Jun 6, 2008, at 3:43 AM, George Stuart wrote:
>>
>>> NSSortDescriptor *desc = [[NSSortDescriptor alloc]
>>> initWithKey:nil ascending:NO
>>> selector:@selector(localizedCompare:)];
>>> NSArray *sortedArray = [unsortedArray sortedArrayUsingDescriptors:
>>> [NSArray arrayWithObject:desc]];
>>> [desc release];
>>>
>>> That seems to work just fine... but I'm worried. I "guessed" at
>>> using the key of "nil" since I want the actual objects in the
>>> array to be the target for the @selector. Is it a fluke that
>>> this works? I don't want to rely on undefined behavior.
>>
>> Hmm. Good question. You could use @"description" as the key to
>> eliminate the uncertainty. Or maybe @"self".
>>
>> Cheers,
>> Ken
>>
>
> Hi,
>
> This may not be an option in every case, but would making a
> "wrapper" class for your strings work? It'd just be a basic class
> with an accessor/property and a corresponding ivar that would then
> be the sort key.
>
> Cheers,
> Andrew
Thanks very much for the responses! I'm leaning away from writing a
wrapper as I'd rather try and leverage the base objects as much as
possible. Adding a wrapper will add complexity -- every place a
string is inserted needs to be sure to first wrap the NSString in my
custom wrapper. It's a minor change, but would like to avoid this if
possible.
The suggestion of using a keyPath of @"self" presents another question:
1) I assume NSSortDescriptor is using valueForKeyPath:, which in
turns calls valueForKey: some number of times, to get the object for
the keyPath I specified. Is it defined behavior that sending an
object valueForKey:@"self" will return the object itself? I guess
this is ultimately the same as my original question, "is it defined
behavior that sending an object valueForKey:nil will return the object
itself?"
As for using a keyPath of @"description", I think this might be the
best way for NSString. I completely forgot about this option. The
docs say:
Returns the receiver.
- (NSString *)description
Duh... That's precisely what I need :).
Thanks,
George
| Related mails | Author | Date |
|---|---|---|
| George Stuart | Jun 6, 10:43 | |
| Ken Thomases | Jun 6, 21:05 | |
| Andrew Merenbach | Jun 6, 21:26 | |
| George Stuart | Jun 6, 23:06 | |
| Adam R. Maxwell | Jun 6, 23:16 | |
| Ken Thomases | Jun 6, 23:51 | |
| Adam R. Maxwell | Jun 7, 00:53 | |
| Kyle Sluder | Jun 9, 05:15 |






Cocoa mail archive

