iPhone-Kontakte-app gestylt indizierte Tabelle Ansicht-Implementierung

Meine Forderung:
Ich habe diese geradlinig Voraussetzung der Aufnahme in die Liste die Namen der Personen in alphabetischer Reihenfolge in eine Indizierte Tabelle anzeigen mit index-Titeln zu Beginn Buchstaben des alphabets (zusätzlich eine Suche-Symbol an der Spitze, und#, um anzuzeigen, misc Werte, die mit einer Zahl beginnen oder Sonderzeichen).

, Was ich bisher getan habe:
1. Ich bin mit core data für storage-und "Nachname" ist modelliert wie eine String-Eigenschaft in der Entität Kontakte
2.Ich bin mit einem NSFetchedResultsController zur Anzeige der sortierten indizierte Tabelle anzeigen.

Probleme Erfüllung meiner Anforderung:
1. Erstens, ich konnte nicht Holen Sie sich den Abschnitt index-Titel, um den ersten Buchstaben des alphabets. Daves Vorschlag in der folgenden post, hat mir geholfen, das gleiche zu erreichen: NSFetchedResultsController mit Abschnitten erstellt, indem Sie den ersten Buchstaben einer Zeichenfolge

Das einzige Problem, das ich gestoßen, mit Dave' Vorschlag ist, dass ich nicht die misc benannt, gruppiert unter "#" index.

Was ich versucht habe:
1. Ich habe versucht, das hinzufügen einer benutzerdefinierten Methode vergleichen zu NSString (Kategorie) um zu überprüfen, wie der Vergleich und die Sektion ist aber, dass die benutzerdefinierte Methode nicht aufgerufen wird, wenn angegeben, in der NSSortDescriptor-Selektor.

Hier einige code:

@interface NSString (SortString)

-(NSComparisonResult) customCompare: (NSString*) aStirng;

@end

@implementation NSString (SortString)

-(NSComparisonResult) customCompare:(NSString *)aString
{
 NSLog(@"Custom compare called to compare : %@ and %@",self,aString);
 return [self caseInsensitiveCompare:aString];
}

@end

Code zum abrufen von Daten:

NSArray *sortDescriptors = [NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"last_name"
               ascending:YES selector:@selector(customCompare:)] autorelease]];

  [fetchRequest setSortDescriptors:sortDescriptors];
        fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
            managedObjectContext:managedObjectContext sectionNameKeyPath:@"lastNameInitial" cacheName:@"MyCache"];

Können Sie lassen Sie mich wissen, was ich bin fehlt, und wie sich der Bedarf erreicht werden kann ?

InformationsquelleAutor KSH | 2010-06-04
Schreibe einen Kommentar