Pergunta

Eu tenho certeza que eu estou faltando algo óbvio aqui em um programa de iPhone simples que eu estou tentando escrever, mas o código parece tão básico que eu não posso ver o que está errado.

Eu estou tentando usar um NSMutableDictionary para armazenar uma lista de classes e seus nomes de arquivo associado Salvar. No arquivo de cabeçalho Declaro o dicionário

@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, claro, no arquivo de implementação:

@implementation ClassList

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

Eu inicializar este dicionário em ViewDidLoad de um arquivo existente que salva o 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];

}

Mais tarde, eu adicionar um item usando setObject: forKey: mas o dicionário nunca muda. Originalmente eu estava fazendo isso em outro controlador de vista usando um back ponteiro para este arquivo ClassList, mas uma vez eu descobri que não funcionou, eu simplificado e tentou apenas definir qualquer objeto amostra e chave dentro do arquivo ClassList:

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

Eu olhei a lista de variáveis ??depurador e mostra classFilenameGlossary corretamente identificado como um NSMutableDictionary com pares 0 chave / valor. Eu não estou recebendo qualquer tipo de erro; o dicionário simplesmente nunca muda. No momento, o dicionário carregado a partir do masterindexpath arquivo está vazio (desde que eu não tenho sido capaz de adicionar todos os itens ainda), mas que não deve me impedir de ser capaz de adicionar itens ao dicionário.

Eu sou um iniciante em programação iPhone, então eu tenho certeza que há algo básico que estou em falta. Eu apreciaria qualquer ajuda.

Nenhuma solução correta

Outras dicas

Esta linha:

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

deve ficar assim:

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

Você esqueceu de alocar memória para o NSMutableDictionary, de modo que é por isso que nunca é inicializado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top