【问题标题】:Transferring Data Between Interface Builder Instantiated Classes在 Interface Builder 实例化类之间传输数据
【发布时间】:2013-08-25 01:03:56
【问题描述】:

我正在编写一个简单的 Cocoa 应用程序,它获取一些文件 URL(通过拖放),然后对这些文件进行处理。我有一个控制拖放机制的类(NSView 的子类),并通过 Interface Builder(使用“自定义类”选项)分配给 NSView。文件 URL 进入 NSMutableArray。

然后我有另一个类应该接受这些文件 URL 并用它们做一些事情。这个类还有一个连接到调用“do stuff”方法的 NSButton 的 IBAction。

我的问题是,我怎样才能以及什么被认为是最好的方法,从“拖放”类中的 NSMutableArray(或其自身的数组)中获取数据到“做事”班级。我知道键值编码、绑定和核心数据等概念,但是我不熟悉它们,不想学习并意识到它不适合我的需求。

任何关于我应该在这里做什么以及我应该如何开始的帮助将不胜感激。

【问题讨论】:

    标签: objective-c macos cocoa class


    【解决方案1】:

    如果您的应用只处理一个(或很少)数组,您可以轻松地将它们写入一个类中的 NSUserDefaults,然后从另一个类中检索它们。检索到后,您可以根据需要更改它并将其写回 NSUserDefaults。这具有将设备上的数据从一个会话保存到另一个会话的额外好处。有人可能会说这有点矫枉过正,但对于少量数据,它的效果非常好。

    写入 NSUserDefaults:

    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    
    //Change this line depending on object you arr saving (eg Array)
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstHome"];
    
    [standardUserDefaults synchronize];
    

    从 NSUserDefaults 获取:

    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];
    
    //Change this line depending on object you are saving (eg Array)
    BOOL tempBOOL = [standardUserDefaults integerForKey:@"firstHome"];
    

    当然还有其他的选择,但是像 CoreData 这样的东西对于一组链接来说是多余的。

    【讨论】:

      猜你喜欢
      • 2011-08-11
      • 2010-10-31
      • 2011-06-02
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      相关资源
      最近更新 更多