Pergunta

Eu tenho um objeto vinculado à interface de usuário com um NSObjectController. Eu sou capaz de arquivar o objeto e desarquivar-lo mais tarde. Isso funciona bem até agora. No depurador eu posso ver o objeto contém os dados I salvas em uma sessão anterior. O problema restante é: A interface do usuário não é atualizada. Eu acho que tenho a dizer a NSObjectController de alguma forma ele tem que lidar com um outro objeto. Mas eu não sei como. Tentei newObject mas que não funcionou em tudo.

No momento minha aparência código como este:

if ([aOpenPanel runModal] == NSOKButton)
{
    NSString *filename = [aOpenPanel filename];
    rpgCharacter = [NSKeyedUnarchiver unarchiveObjectWithFile:filename];

    // [myCharacterController DoSomething] ???
}

rpgCharacter deve ser o objeto para a myCharacterController.

Foi útil?

Solução

O que você está fazendo é definir o rpgCharacter iVar diretamente. A fim de KVO gatilho que você precisa fazer isso de uma maneira diferente, quer:

Se você estiver usando Objective-C 2.0 e sintaxe da propriedade:

if ([aOpenPanel runModal] == NSOKButton)
{
    NSString *filename = [aOpenPanel filename];
    self.rpgCharacter = [NSKeyedUnarchiver unarchiveObjectWithFile:filename];

}

ou, se você estiver usando KVC diretamente e ter um setter nomeado corretamente:

if ([aOpenPanel runModal] == NSOKButton)
{
    NSString *filename = [aOpenPanel filename];
    [self setRpgCharacter:[NSKeyedUnarchiver unarchiveObjectWithFile:filename]];

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