Singleton source de données partagée en Objective-C

Hey les gens - je suis en train d'écrire est assez simple une application iPhone. Les données proviennent d'un fichier plist (NSDictionary essentiellement), que je suis en train de charger dans une classe singleton et l'utilisation à travers mes différents afficher les contrôleurs d'accès aux données.

Voici la mise en œuvre de mon singleton (fortement calquée sur ce fil)

@implementation SearchData

@synthesize searchDict;
@synthesize searchArray;

- (id)init {
    if (self = [super init]) {
        NSString *path = [[NSBundle mainBundle] bundlePath];
        NSString *finalPath = [path stringByAppendingPathComponent:@"searches.plist"];
        searchDict = [NSDictionary dictionaryWithContentsOfFile:finalPath];
        searchArray = [searchDict allKeys];
    }

    return self;
}

- (void)dealloc {
    [searchDict release];
    [searchArray release];
    [super dealloc];
}

static SearchData *sharedSingleton = NULL;

+ (SearchData *)sharedSearchData {
    @synchronized(self) {
        if (sharedSingleton == NULL)
            sharedSingleton = [[self alloc] init];
    }   
    return(sharedSingleton);
}

@end

Donc à chaque fois que j'essaie d'accéder à la searchDict ou searchArray propriétés d'ailleurs dans mon application (comme un TableView délégué) comme suit:

[[[SearchData sharedSearchData] searchArray] objectAtIndex:indexPath.row]

J'obtiens une exception indiquant *** -[NSCFSet objectAtIndex:]: unrecognized sélecteur envoyé à l'instance 0x5551f0

Je ne suis pas vraiment sûr de savoir pourquoi la objectAtIndex le message est envoyé à un NSCFSet objet, j'ai l'impression que ma singleton est mis en œuvre mauvais ou quelque chose. J'ai essayé aussi de plus en plus complexe singleton mise en œuvre, comme recommandé par apple dans le susmentionnés fil et avait le même problème. Merci pour toutes les informations que peut fournir.

OriginalL'auteur Andy Bourassa | 2008-12-10