Pregunta

Estoy seguro de que me falta algo obvio aquí en un simple programa de iPhone que estoy tratando de escribir, pero el código parece tan básico que no puedo ver lo que está mal.

Estoy intentando utilizar un NSMutableDictionary para almacenar una lista de clases y sus asociados salvan los nombres de archivo. En el archivo de cabecera Declaro el diccionario

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

Y, por supuesto, en el archivo de implementación:

@implementation ClassList

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

Me inicializar este diccionario en viewDidLoad partir de un archivo existente que guarda el 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];

}

Más tarde, añado un elemento utilizando setObject: forKey: pero el diccionario no cambia nunca. Al principio yo estaba haciendo esto en otro controlador de vista usando un puntero de nuevo a este archivo ClassList, pero una vez que descubrí que no funcionó, he simplificado y trató acaba de establecer cualquier objeto de la muestra y la clave dentro del archivo ClassList:

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

He mirado en la lista de variables del depurador y se nota classFilenameGlossary debidamente identificado como un NSMutableDictionary con pares 0 clave / valor. Hasta ahora no recibo ningún tipo de error; el diccionario simplemente nunca cambia. Por el momento, el diccionario cargado desde el masterindexpath archivo está vacío (ya que no he sido capaz de añadir productos a su orden), pero eso no me debe evitar ser capaz de añadir elementos al diccionario.

Soy un principiante en la programación iPhone, así que estoy seguro de que hay algo básico que me falta. Te agradecería cualquier ayuda.

No hay solución correcta

Otros consejos

Esta línea:

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

debería tener este aspecto:

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

Usted se olvidó de asignar memoria para el NSMutableDictionary, así que por eso nunca se inicializa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top