Frage

Ich habe eine auf die Benutzeroberfläche mit einem NSObjectController gebunden Objekt. Ich kann den Gegenstand zu archivieren und dearchivieren es später. Das funktioniert so weit in Ordnung. Im Debugger kann ich sehen, das Objekt die Daten hält ich in einer früheren Sitzung gespeichert. Das verbleibende Problem ist: Die Benutzeroberfläche wird nicht aktualisiert. Ich denke, ich habe die NSObjectController zu sagen, irgendwie er mit einem anderen Objekt zu tun hat. Aber ich weiß nicht, wie. Ich versuchte newObject aber, dass überhaupt nicht funktionieren.

Im Moment mein Code sieht wie folgt aus:

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

    // [myCharacterController DoSomething] ???
}

rpgCharacter sollte das Objekt für die myCharacterController sein.

War es hilfreich?

Lösung

Was Sie tun, ist die rpgCharacter iVar direkt einstellen. Um KVO auslösen müssen Sie dies in einer anderen Art und Weise tun, entweder:

, wenn Sie mit Objective-C 2.0 und Eigentum Syntax:

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

}

oder, wenn Sie KVC verwenden direkt und haben einen richtig benannten Setzer:

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

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