Created
June 8, 2009 06:21
-
-
Save masakih/125665 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // NSString から NSSortDescriptor の NSArrayを生成 | |
| // | |
| // @"sortDescriptorsBynameDESCANDcharacterDOTname" | |
| // を受けて、name(DESC) と character.name の二つからなるそれを返す。 | |
| NSString *sortDesctiptorsBy = @"sortDescriptorsBy"; | |
| - (id)sortDescriptorsFromString:(NSString *)keysString | |
| { | |
| NSArray *keys; | |
| NSString *aKey; | |
| NSMutableArray *result = [NSMutableArray array]; | |
| keysString = [keysString stringByReplacingOccurrencesOfString:@"DOT" | |
| withString:@"."]; | |
| keys = [keysString componentsSeparatedByString:@"AND"]; | |
| for(aKey in keys) { | |
| BOOL ascending = YES; | |
| if([aKey hasSuffix:@"DESC"]) { | |
| ascending = NO; | |
| aKey = [aKey substringToIndex:[aKey length] - 4/* length of DESC */]; | |
| } | |
| NSSortDescriptor *s = [[[NSSortDescriptor alloc] initWithKey:aKey | |
| ascending:ascending] autorelease]; | |
| [result addObject:s]; | |
| } | |
| return result; | |
| } | |
| - (id)valueForKey:(NSString *)key | |
| { | |
| if([key hasPrefix:sortDesctiptorsBy]) { | |
| NSUInteger prefixLength; | |
| NSUInteger length; | |
| NSString *sortKeys; | |
| length = [key length]; | |
| prefixLength = [sortDesctiptorsBy length]; | |
| if(prefixLength == length) goto end; | |
| sortKeys = [key substringFromIndex:prefixLength]; | |
| return [self sortDescriptorsFromString:sortKeys]; | |
| } | |
| end: return [super valueForKey:key]; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment