标签: nsarraycontroller

Cocoa绑定到数组控制器中的特定项

是否可以使用NSArrayControllerNSTextField值绑定到数组中的特定项?特别是,我想绑定到数组中第一项的属性,如果数组为空则不显示任何内容.

使用arrangedObjects.command节目只是"(" - 大概是它试图用每个项目显示一个逗号分隔的字符串的多行字符串.我只想要第一个.

cocoa key-value-observing key-value-coding nsarraycontroller cocoa-bindings

4
推荐指数
1
解决办法
1992
查看次数

为什么NSArrayController在插入对象后"丢失"它的排序?

我有一个NSArrayController绑定到NSManagedObject子类的属性.子类由mogenerator自动生成(为关系创建set属性).

NSArrayController绑定到network.posts,其中'posts'是1-M关系.注意我绑定到'posts'而不是mogenerator生成的'postsSet'mutableSet访问器.

该集合表示与另一个实体的关系.阵列控制器具有排序描述符集,当与窗口关联的窗口打开时,数据以正确的排序顺序显示.

然后我通过实例化一个实体然后将其添加到关系中来添加一个新对象.

NSArrayController的正确观察这种变化和新的对象出现在arrangedObjects然而,插入arrangedObjects的排序次序会丢失后的记录出现在不同的顺序.

我已经验证排序描述符仍然正确设置.NSArrayController具有autoRearrangeContent = YES.我甚至尝试在插入后手动调用-rearrangeObjects,但排序顺序仍然是错误的.

如果我关闭窗口并重新打开新实例化的NSArrayController,则会再次使用正确的排序顺序.直到我做另一个插入.

我的经验是NSArrayController在添加/删除对象时自动保持正确的排序顺序,但这可能是一个幸运的巧合?

我找不到Apple文档中正确行为的任何描述,因此我不知道会发生什么,可能出现什么问题(如果有的话),或者 - 在任何一种情况下 - 我应该怎么做.

1)给定一个sortDescriptor NSArrayController应该保持arrangeObjects在从底层集合插入/删除对象后排序吗?

2)如果是这样,可能会阻止这种情况发生?

3)而且,如果没有,保持arrangeObjects排序的正确方法是什么?

我会感激任何帮助.在这种情况下提供有用的源代码并不容易,因为原则上没有任何源代码.但我很乐意澄清并回答任何后续问题.

sorting cocoa core-data objective-c nsarraycontroller

4
推荐指数
1
解决办法
1620
查看次数

Cocoa Bindings错误

试图将我的头围绕cocoa绑定无法确定此错误的原因

我有一个简单的应用程序,其中,app委托将Managedobjectcontext传递给Window Controller,后者将其传递给视图控制器.与视图关联的nib是一个带有数组控制器的基于视图的表.

我在app委托中启动了一些托管对象,当我运行应用程序时,表中填充了对象但是抛出了以下错误

[_NSControllerArrayProxy firstIndex]:无法识别的选择器发送到实例0x100165510

由于代码很少,不知道如何调试它

cocoa core-data nsarraycontroller cocoa-bindings

4
推荐指数
1
解决办法
569
查看次数

将NSArrayController绑定到NSSearchField并在NSTableView中查看结果

我的应用说明,

  1. 添加NSMutableArray一些项目(比如1-50)
  2. 添加NSArrayController并将该数组添加/绑定到此arrayController
  3. 添加NSTableView到我的视图并使用BINDINGS的概念填充它们.
  4. 最后NSSearchField通过添加/绑定NSArrayController和searchField来添加并完成应用程序.

我想知道这种方法是否意味着它,我已经搜索但是找不到在NSTableView使用NSArrayController绑定中显示填充数组的方法.

帮帮我.

macos cocoa nstableview nsarraycontroller nssearchfield

4
推荐指数
1
解决办法
2361
查看次数

使用NSArrayController管理有序核心数据关系

所有那些"NSOrderedSet后来被添加,因此不必与其他组件一起玩"错误让我发疯...

(https://twitter.com/kubanekl/status/413447039855640576)

我有两个托管对象和它们之间有序的1:N关系,它由一个实例(或更精确的子类)支持NSOrderedSet.我想使用a来管理这种关系NSArrayController,以便从它提供的功能中获益(选择管理,内容绑定,视图绑定等NSTableView).

由于NSOrderedSet不是子类NSSet,contentSet绑定NSArrayController不适用于该关系.我发现了以下主题并试图实现那里提到的建议.

第一个建议是使用contentArray绑定和值转换器将有序集转换为数组.这个解决方案的问题是每次进行更改时重新分配内容,这不是我想要的.

在提到的线程中提供的第二个建议是使用contentArray绑定并将@array操作符应用于模型密钥路径.我已经尝试过,但是当通过添加/删除对象时根本没有触及底层关系NSArrayController.

我发现的另一个选项是使用带contentSet绑定的排序描述符.这将需要使关系无序,以便使contentSet绑定工作并引入特别用于管理订单的新属性.这还需要一个自定义排序机制来实现,它会搞砸模型.老实说,我想避免这个解决方案.

我的问题很清楚:有没有办法管理有序的核心数据关系NSArrayController?如果是这样,哪种方法尽可能少引起疼痛?

cocoa core-data nsarraycontroller cocoa-bindings nsorderedset

4
推荐指数
1
解决办法
1657
查看次数

刷新Cocoa-Binding - NSArrayController - ComboBox

在我的应用中,我做了一个非常简单的绑定.我有一个绑定到NSArrayController的NSMutableArray.控制器本身绑定到ComboBox,它显示NSMutableArray的所有内容.工作良好.

问题是:数组的内容会发生变化.如果用户对应用程序进行了一些调整,我会删除NSMuteableArray中的所有项目,并用新的和不同的项目填充它.

但是NSMutableArray < - > NSArrayController < - > NSComboBox的绑定不会刷新.

无论我是否从Array中删除所有对象,ComboBox仍然显示相同的项目.

这有什么不对?我的方法是错误的还是我只需要告诉绑定刷新自己?我没有发现如何做到这一点.

cocoa nsarraycontroller cocoa-bindings

3
推荐指数
1
解决办法
4686
查看次数

Cocoa:从NSArrayController中删除Item

我有一个绑定到NSTableView的NSArrayController.有了这个,我有典型的添加/删除按钮.

虽然添加项目非常简单(我调用一个方法,创建一个具有默认值的对象并添加它)我在从控制器中删除对象时遇到问题.我知道当使用ArrayController中的remove动作连接按钮时,我可以轻松地执行此操作.但这不是我想要的.我需要手动删除对象,因为我有一些额外的代码要处理.

然而,删除对象似乎远比我预期的要复杂得多.它已经尝试过:

NSArray *items =  [doToItemsArrayController selectedObjects];
[doToItemsArrayController removeSelectedObjects:items]; 
Run Code Online (Sandbox Code Playgroud)

要么

NSIndexSet *iSet = [doToItemsArrayController selectionIndexes];
[doToItemsArrayController removeSelectionIndexes:iSet];
Run Code Online (Sandbox Code Playgroud)

他们似乎都没有工作.如何使用Objective-C代码从NSArrayController中删除所选对象?

cocoa binding nsarraycontroller

3
推荐指数
1
解决办法
3580
查看次数

NSPopUpButton + Bindings +显示所有选项

我正在尝试开发一个NSPopUpButton可以作为某个数据源的过滤器,让我们说一个NSArrayController填充表.

我可以将NSArrayController菜单中的菜单绑定到选择键路径,以便正确过滤数据,没问题.

棘手的部分是,我希望这个内容NSPopUpButton依赖于NSArrayController使用绑定,但我想添加一个"全部显示"菜单项,或者至少一些不是来自核心数据并且执行一些特殊的项目除了使用绑定和核心数据过滤表之外的其他操作.

我正在尝试执行类似NSPopUpButton过滤器栏中的finder 所使用的操作,菜单的最后一项执行特殊操作,而其他项只是过滤结果.

我理解这种方法是忘记绑定并以编程方式完成所有操作,因为我相信没有办法搞砸NSArrayController和绑定来添加不依赖于核心数据的自定义菜单项,但是因为我还没有在Apple Docs上发现了什么,在这里,我想分享我的想法......任何想法?

cocoa objective-c nsarraycontroller cocoa-bindings nspopupbutton

3
推荐指数
1
解决办法
1334
查看次数

使用NSArrayController过滤单列NSTableView

我提出一张带有NSTableView(一列)NSSearchField和一张NSButton('添加')的表格.我想要的是将表视图的内容设置为字符串列表.此字符串列表位于被NSArray调用列表中.应根据搜索字段的内容(如果列表中的字符串)不包含搜索字段的内容来过滤此内容,而不再在表视图中显示该内容.

我不熟悉绑定,任何人都可以帮助我.

macos cocoa nstableview nsarraycontroller cocoa-bindings

3
推荐指数
1
解决办法
1844
查看次数

将Cocoa NSComboBox值绑定到对象

假设我有一个NSObject代表一个国家的子类,例如

@interface CountryInfo : NSObject

@property (nonatomic, retain) NSString *countryName;
Run Code Online (Sandbox Code Playgroud)

我的模型包含NSMutableArrayCountryInfo秒.我想将数组绑定到NSComboBox.组合框应显示国家/地区名称,并允许用户选择国家/地区.

所以,我像这样设置我的.xib:

CountryArrayController(NSArrayController)

ContentArray

  • 绑定到:文件所有者 >模型关键路径:self.model.countries

NSComboBox

内容

  • 绑定到:CountryArrayController >控制键:arrangedObjects

内容价值

  • 绑定到:CountryArrayController >控制键:arrangedObjects >型号主要路径:国家名称

到现在为止还挺好.现在,如何绑定的价值NSComboBox?文件说明:

"An NSString or NSNumber that specifies the value of the NSComboBox."
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我注意到我可以将它绑定到NSString我的模型上,它将反映所选的countryName.但我想绑定到CountyInfo对象本身!无论是直接,还是通过绑定到我的阵列控制器上的选择:我该如何设置它?

cocoa binding nsarraycontroller cocoa-bindings nscombobox

3
推荐指数
1
解决办法
2221
查看次数