Domanda

Sono sicuro che mi manca qualcosa ovvio qui in un semplice programma iPhone Sto cercando di scrivere, ma il codice sembra così fondamentale che non riesco a vedere che cosa c'è che non va.

Sto cercando di utilizzare un NSMutableDictionary per memorizzare un elenco delle classi e dei loro associati Salva i nomi dei file. Nel file di intestazione dichiaro dizionario

@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;

E, naturalmente, nel file di implementazione:

@implementation ClassList

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

inizializzo questo dizionario in viewDidLoad da un file esistente che salva il classlist:

- (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];

}

In seguito, aggiungo un elemento utilizzando setObject: Forkey: ma il dizionario non cambia mai. Originariamente stavo facendo questo in un altro controller di vista utilizzando un puntatore di nuovo a questo file ClassList, ma una volta ho scoperto che non ha funzionato, ho semplificato e ho cercato di appena impostato qualsiasi oggetto campione e chiave all'interno del file ClassList:

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

Ho guardato il debugger elenco di variabili e si vede classFilenameGlossary correttamente identificato come NSMutableDictionary con coppie 0 chiave / valore. Non ricevo alcun tipo di errore; dizionario semplicemente non cambia mai. Al momento, il dizionario caricato dal file masterindexpath è vuoto (dal momento che non sono stato in grado di aggiungere tutti gli elementi ancora), ma che non mi dovrebbe evitare di essere in grado di aggiungere elementi al dizionario.

Sono un principiante totale a programmazione iPhone, quindi sono sicuro che ci sia qualcosa di fondamentale che mi manca. Apprezzerei qualsiasi aiuto.

Nessuna soluzione corretta

Altri suggerimenti

Questa riga:

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

dovrebbe essere simile a questo:

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

Hai dimenticato di allocare memoria per il NSMutableDictionary, ecco perché non è mai inizializza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top