Frage

Ich bin sicher, dass ich etwas offensichtlich hier in einem einfachen iPhone Programm fehlt mir zu schreiben, ich versucht, aber der Code scheint so einfach, dass ich nicht sehen kann, was falsch ist.

Ich versuche, eine NSMutableDictionary zu verwenden, um eine Liste der Klassen zu speichern und ihre speichern Dateinamen zugeordnet. In der Header-Datei erkläre ich das Wörterbuch

@interface ClassList : UITableViewController {
NSString *homedirectory;
NSString *masterindexpath;
NSMutableDictionary *classFilenameGlossary;
NSMutableArray *listofclasses;
}

@property (retain, nonatomic) NSString *homedirectory;
@property (retain, nonatomic) NSString *masterindexpath;
@property (retain, nonatomic) NSMutableDictionary *classFilenameGlossary;
@property (retain, nonatomic) NSMutableArray *listofclasses;

Und natürlich, in der Implementierungsdatei:

@implementation ClassList

@synthesize homedirectory;
@synthesize masterindexpath;
@synthesize classFilenameGlossary;
@synthesize listofclasses;

Ich initialisieren dieses Wörterbuch auf ViewDidLoad aus einer bestehenden Datei, die die Benotungsliste speichert:

- (void)viewDidLoad {
[super viewDidLoad];

// Get home directory

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
homedirectory = [paths objectAtIndex:0];
masterindexpath = [homedirectory stringByAppendingPathComponent:@"MasterIndex"];

// Get master course list or create it if necessary

NSFileManager *fm = [NSFileManager defaultManager];
if ([fm fileExistsAtPath:masterindexpath] == NO)
{
    NSMutableDictionary *temporarydictionary = [NSMutableDictionary dictionary];
    [temporarydictionary writeToFile:masterindexpath atomically:NO];
    [temporarydictionary release];
}

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

[homedirectory retain];
[masterindexpath retain];

}

Später, füge ich einen Gegenstand mit setObject: forKey: aber das Wörterbuch nie ändert. Ursprünglich tat ich dies in einem anderen View-Controller einen Zeiger zurück auf diese Classlist-Datei, aber sobald ich entdecken, dass nicht funktioniert, ich vereinfachte und versuchte zu setzen einfach jede Probe Objekt und Schlüssel in der Datei Classlist:

    [classFilenameGlossary setObject:@"sample filename" forKey:@"sample classname"];

Ich habe an der Debugger Variablenliste geschaut und es zeigt classFilenameGlossary richtig als NSMutableDictionary identifiziert und mit 0 Schlüssel / Wert-Paaren. Ich bin nicht irgendeine Art von Störung zu erhalten; das Wörterbuch einfach nie ändert. Im Moment das Wörterbuch aus der Datei masterindexpath geladen ist leer (da ich nicht in der Lage gewesen, alle Elemente noch hinzugefügt werden), aber das sollte mich nicht halten von der Möglichkeit, Elemente zum Wörterbuch hinzuzufügen.

Ich bin ein totaler Anfänger bei iPhone-Programmierung, so dass ich bin sicher, es ist etwas grundlegend, dass ich fehle. Ich würde über jede Hilfe zu schätzen wissen.

Keine korrekte Lösung

Andere Tipps

Diese Zeile:

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

sollte wie folgt aussehen:

classFilenameGlossary = [[NSMutableDictionary alloc] initWithContentsOfFile:masterindexpath];

Sie haben vergessen, Speicher für die NSMutableDictionary zuzuweisen, ist also, warum es nie initialisiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top