2

在我的头文件中,我声明了一个属性

@property (strong) NSMutableDictionary *myContents;

在我的实现中,我已将 plist(它们是字典)的内容分配给 NSMutableDictionary。

在我的窗口中,我有一个 NSSearchField 我想与 Dictionary 绑定,这就是问题所在。我有几个问题,经过重新研究后仍然不明白。

(1)我应该使用哪个?NSObjectController、NSDictionaryController 或 NSTreeController。

(2)我应该如何将控制器绑定到字典?是否有可以绑定的“键”和“值”,还是必须使用在另一个类中声明的属性并将其添加到字典中?

(3) 我可以将它绑定到一侧有“键”而另一侧有“值”的 NSTableView 吗?

谢谢!

更新 我的 plist 就像这个字典(根)>字典>字符串。我设置字典的方式是这样的:

NSString *myListPath = [[NSBundle mainBundle] pathForResource:@"Collection" ofType:@"plist"];
self.Dictionary1 = [[NSMutableDictionary alloc]initWithContentsOfFile:myListPath];

我通过以下方式访问其中之一:

    NSString *initialString = [[_Dictionary1 valueForKey:@"Book1"]objectForKey:@"1"];

Book1 是一个字典(第二个)。“1”是字符串,是 Book1 的章节。那我该怎么分呢?

4

2 回答 2

3

(1)我应该使用哪个?NSObjectController、NSDictionaryController 或 NSTreeController。

使用 NSDictionaryController。

(2)我应该如何将控制器绑定到字典?是否有可以绑定的“键”和“值”,还是必须使用在另一个类中声明的属性并将其添加到字典中?

第 1 步:@property(strong)NSMutableDictionary *dict;在 .h 文件中创建

第 2 步:创建一个 NSDictionaryController。

第 3 步:检查准备内容。

第 4 步:设置为:

在此处输入图像描述

第 5 步:创建一个 NSTableView。

第 6 步:对于第一列,执行以下操作:

在此处输入图像描述

第7步:同样为第二列value放入Model Key Path

在此处查找运行示例

(3) 我可以将它绑定到一侧有“键”而另一侧有“值”的 NSTableView 吗?

已经完成了。

通过 NSSearchField 将 NSDictionaryController 与 NSTableView 绑定

第 1 步:绘制一个 NSSearchField。

第 2 步:将其绑定到 Predicate 选项中的 NSDicitonaryController。

第 3 步:以谓词格式放入key contains $value

在此处输入图像描述

于 2013-03-08T14:46:18.187 回答
1

因为你的第二个问题是:

NSString *myListPath = [[NSBundle mainBundle] pathForResource:@"Collection" ofType:@"plist"]; self.Dictionary1 = [[NSMutableDictionary alloc]initWithContentsOfFile:myListPath];

我通过以下方式访问其中之一:

NSString *initialString = [[_Dictionary1 valueForKey:@"Book1"]objectForKey:@"1"];

您可以使用 :

NSString *book=@"Book1";
NSString *chapter=[book integerValue];
NSString *initialString=self.Dictionary1[book][chapter];
于 2013-03-08T17:01:53.463 回答