在Interface Builder实例化类之间传输数据

时间:2013-08-22 10:35:25

标签: objective-c macos cocoa class

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

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

我的问题是,从“拖放”类到“执行内容”,从NSMutableArray(或自己的数组)获取数据,我怎么能以及被认为是最好的方法呢?类。我知道Key Value Coding,Bindings和Core Data等概念,但我不熟悉它们,不想学习它并且意识到它不适合我的需要。

我对此应该做的任何帮助,以及我应该如何开始都将非常感激。

1 个答案:

答案 0 :(得分:-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这样的东西对于一个链接数组来说是过度的。