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
Objective c 将NSTokenField绑定到阵列控制器_Objective C_Cocoa_Delegates_Nsarray_Nstokenfield - Fatal编程技术网

Objective c 将NSTokenField绑定到阵列控制器

Objective c 将NSTokenField绑定到阵列控制器,objective-c,cocoa,delegates,nsarray,nstokenfield,Objective C,Cocoa,Delegates,Nsarray,Nstokenfield,我有一个数组控制器和一个用于数据输入的令牌字段。 我找不到使用token字段将标记化文本绑定到数组控制器的方法 问题是,当我使用令牌字段委托时,它返回的是NSArray而不是NSString格式的实体属性,当运行我的应用程序时,如果我使用此令牌字段,我会出现一个错误,显示不兼容的数据模式属性接受NSString而不是NSArray 事实上,我可以处理token字段来显示token参数,但我不能处理将token字段绑定到数据数组中 我能做些什么来解决这个问题呢?我知道这是一个古老的问题,但我相信我

我有一个数组控制器和一个用于数据输入的令牌字段。 我找不到使用token字段将标记化文本绑定到数组控制器的方法

问题是,当我使用令牌字段委托时,它返回的是NSArray而不是NSString格式的实体属性,当运行我的应用程序时,如果我使用此令牌字段,我会出现一个错误,显示不兼容的数据模式属性接受NSString而不是NSArray

事实上,我可以处理token字段来显示token参数,但我不能处理将token字段绑定到数据数组中


我能做些什么来解决这个问题呢?

我知道这是一个古老的问题,但我相信我有一个答案,我想贡献它,因为令牌字段值的绑定没有很好的文档记录。事实上,苹果的文档是误导性的

如果您只需要一个存储在核心数据中的字符串数组,而不需要处理representedObject或令牌字段委托,那么实际上您可以在XIB和xcdatamodel中执行所有操作

将核心数据实体的NSString属性切换为可绑定到令牌字段的属性的第一步。您需要将属性设置为可转换类型。称之为tokenStringArray。数据模型已经完成。任何访问该属性的代码现在都应该期望一个字符串数组

令牌字段的值绑定希望连接到一个控制器,该控制器可以传递具有控制器密钥的单个实体,并且该单个实体具有传递字符串数组的模型密钥路径。因此,如果您的阵列控制器正在选择单个实体,则可以选择控制器键和模型键路径的tokenStringArray。选择“连续更新值”或“保存”可能不会立即持续

就这样。将transformable tokenStringArray属性绑定到令牌字段的值后,用户对令牌字段的更改将被持久化


[值得一提的是,我个人有一个绑定到单个实体的对象控制器。要将令牌字段绑定到核心数据属性,似乎某种类型的控制器必须是中间的,所以对我来说,它是对象控制器。如果您有一个表,其中用户对实体的选择应该填充令牌字段,那么您可以使用数组cocontroller。令牌字段无法编辑阵列控制器的ArrangedObject-它只能从单个对象获取和传递阵列。]

你解决了这个问题吗?我这里也有同样的问题,我正在尝试使用一个值转换器,但我不知道如何设置它。@Mario,没有!我终于改回了NSTextField的自动补全,现在我完成了!