Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 存档/取消存档NSTableViewController数据的最佳做法?_Objective C_Cocoa_Cocoa Design Patterns - Fatal编程技术网

Objective c 存档/取消存档NSTableViewController数据的最佳做法?

Objective c 存档/取消存档NSTableViewController数据的最佳做法?,objective-c,cocoa,cocoa-design-patterns,Objective C,Cocoa,Cocoa Design Patterns,我有一个拥有nib文件的NSWindowViewController。nib文件中的一个对象是NSTableView,由NSTableViewController(也是nib的一部分)管理 我想实现NSCoding协议来保存所有模型数据,其中一些数据包含在NSTableViewController(简称TVC)中。归档整个TVC似乎是一个错误的答案,因为当它以后未归档时,它不会连接到nib。虽然我可能可以用编程的方式重新布线,但这看起来很麻烦 我可以让NSWindowViewController

我有一个拥有nib文件的NSWindowViewController。nib文件中的一个对象是NSTableView,由NSTableViewController(也是nib的一部分)管理

我想实现NSCoding协议来保存所有模型数据,其中一些数据包含在NSTableViewController(简称TVC)中。归档整个TVC似乎是一个错误的答案,因为当它以后未归档时,它不会连接到nib。虽然我可能可以用编程的方式重新布线,但这看起来很麻烦

我可以让NSWindowViewController从TVC中获取表数据,但这意味着我必须公开所有IVAR,这似乎也是错误的解决方案


归档/取消归档TVC中存储的数据的最佳方式是什么?

表视图控制器应该有一个对存储您数据的模型的引用,或者如果您的应用程序很简单,您可以将该模型数据存储在表视图控制器的数组或字典中。应该归档的是存储数据的数组或字典,而不是表视图控制器。

表视图控制器应该有一个对存储数据的模型的引用,或者如果您的应用程序很简单,您可以将该模型数据存储在表视图控制器的数组或字典中。应该归档的是存储数据的数组或字典,而不是表视图控制器。

我同意需要归档的是数组(由表视图控制器存储)。但是TVC本身无法存档,因为存档方法将存储TVC本身。如果TVC不能/不应该实现initWithCoder:,那么它也不应该实现encodeWithCoder:。因此,我不得不将数组ivar升级为@property,以便其他人可以查看并归档它。我只是想知道是否还有一种方法我错过了,它不涉及将ivar转换为属性。我添加了一些方法来将私有数据打包和解包到字典中。然后调用方法将其交给存档者/从存档者处转交。我同意数组(由表视图控制器存储)是需要存档的。但是TVC本身无法存档,因为存档方法将存储TVC本身。如果TVC不能/不应该实现initWithCoder:,那么它也不应该实现encodeWithCoder:。因此,我不得不将数组ivar升级为@property,以便其他人可以查看并归档它。我只是想知道是否还有一种方法我错过了,它不涉及将ivar转换为属性。我添加了一些方法来将私有数据打包和解包到字典中。然后,调用方法将其交给存档者。