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
Macos 核心数据中的单个对象_Macos_Cocoa_Core Data_Cocoa Bindings - Fatal编程技术网

Macos 核心数据中的单个对象

Macos 核心数据中的单个对象,macos,cocoa,core-data,cocoa-bindings,Macos,Cocoa,Core Data,Cocoa Bindings,我正在开发一个基于文档、基于核心数据的MacOS Cocoa应用程序,并且正在使用一个NSArrayController,它选择了我想要保存的索引(在文档中),这样当用户保存文档并在别处重新打开它时,表中的相同行(/object the detail view is on)就会被选中。有没有办法做到这一点 我通常可以想出保存NSIndexSet的方法,但我不知道如何只保存一个特定对象并将其取回,特别是使用绑定和接口生成器 谢谢 理论上,这里没有什么困难。存储selectionIndex与存储任何

我正在开发一个基于文档、基于核心数据的MacOS Cocoa应用程序,并且正在使用一个NSArrayController,它选择了我想要保存的索引(在文档中),这样当用户保存文档并在别处重新打开它时,表中的相同行(/object the detail view is on)就会被选中。有没有办法做到这一点

我通常可以想出保存NSIndexSet的方法,但我不知道如何只保存一个特定对象并将其取回,特别是使用绑定和接口生成器


谢谢

理论上,这里没有什么困难。存储
selectionIndex
与存储任何其他NSIndexSet没有区别。您只需使用名为
selectedRows
Transformable属性创建一个实体,然后在保存文件之前将
arrayController.selectionIndex
的值放入其中,并在中读取文档后立即读取。您无需担心其他任何事情,CoreData只需处理它。如果您还没有一个逻辑“根”元素来存储它,那么只需创建一个新的实体,可能称为UIState,上面有这样一个属性,并将其存储在那里

在我看来,出于几个原因,您可能实际上不想将此值绑定到该实体。首先,您可能不想单独更改选择来弄脏文档,对吗?我的意思是,也许你会,但这听起来更像是一个烦恼而不是一个功能,而保存选择,一般来说,听起来更像是一个方便而不是一个特许功能。但我不知道你的申请,所以很难说

另一个原因是,如果在IB中绑定
arrayController.selectionIndexes
arrayController.contentArray
,当它绑定
contentArray
绑定时,它看起来会在打开文档时绑定contentArray之后立即为
selectionIndexes
写入初始值,破坏你的真正价值。(我可以想象它是这样的:'您只需设置内容,因此选择的任何以前的值现在都无效,让我们不使用任何内容覆盖它!')因此,至少,如果您绑定了值,您必须想出一些聪明的方法,以避免您的实际值被此初始写入所破坏

在我看来,您最好不要直接将其绑定到模型,而是将其绑定到文档上的临时属性,您可以在保存时读取该属性,并在打开文档时写入该属性。这就是我要说的