代码之家  ›  专栏  ›  技术社区  ›  TalkingCode

cocoa:从磁盘中无存档数据后刷新nsObjectController

  •  0
  • TalkingCode  · 技术社区  · 15 年前

    我用nsObjectController将一个对象绑定到用户界面。我可以将对象存档,稍后将其取消存档。到目前为止这还可以。在调试器中,我可以看到对象保存了我在上一个会话中保存的数据。剩下的问题是:用户界面不刷新。我想我必须告诉nsobjectcontroller他必须处理另一个对象。但我不知道怎么做。我试过NewObject,但根本没用。

    目前我的代码如下:

    if ([aOpenPanel runModal] == NSOKButton)
    {
        NSString *filename = [aOpenPanel filename];
        rpgCharacter = [NSKeyedUnarchiver unarchiveObjectWithFile:filename];
    
        // [myCharacterController DoSomething] ???
    }
    

    rpgCharacter应该是MyCharacterController的对象。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Abizern    15 年前

    您要做的是直接设置rpgCharacter ivar。要触发kvo,您需要以不同的方式执行此操作:

    如果使用的是objective-c 2.0和属性语法:

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

    或者,如果您直接使用kvc并具有正确命名的setter:

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