Singleton freigegebene Datenquelle in Objective-C

Hey Leute - ich Schreibe eine ziemlich einfache iPhone-Anwendung. Die Daten stammen aus einer plist-Datei (NSDictionary im Grunde), dass ich versucht bin laden in eine singleton-Klasse und verwenden Sie Sie in meine verschiedenen view-Controller Zugriff auf die Daten.

Hier ist die Umsetzung für meinen singleton (stark nachempfunden dieser thread)

@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

Also immer wenn ich versuche, auf die searchDict oder searchArray Eigenschaften an anderer Stelle in meiner Anwendung (wie ein TableView delegate) etwa so:

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

Bekomme ich eine Ausnahme, * * * - [NSCFSet objectAtIndex:]: unrecognized selector geschickt Instanz 0x5551f0

Ich bin mir nicht wirklich sicher, warum das objectAtIndex Nachricht wird gesendet, um eine NSCFSet Objekt, fühle ich mich wie mein singleton implementiert ist falsch oder sowas. Ich habe auch versucht, eine komplexere singleton-Implementierung wie empfohlen von apple in der oben genannten thread und hatte das gleiche problem. Vielen Dank für jeden Einblick, den Sie bieten kann.

InformationsquelleAutor Andy Bourassa | 2008-12-10

Schreibe einen Kommentar