Cocoa绑定可变字典与搜索字段

时间:2013-03-07 15:20:44

标签: objective-c macos cocoa cocoa-bindings

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

@property (strong) NSMutableDictionary *myContents;

在我的实现中,我已经将一个plist(它们是dictonaries)的内容分配给了NSMutableDictionary。

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

(1)我应该使用哪个? NSObjectController,NSDictonaryController或NSTreeController。

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

(3)我可以将它绑定到NSTableView中,一边是“Key”,另一边是“value”吗?

谢谢!

更新 我的plist就像这个Dictonary(root)> Dictionary> Strings。我设置字典的方式是这样的:

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

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

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

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

2 个答案:

答案 0 :(得分:3)

  

(1)我应该使用哪个? NSObjectController,NSDictonaryController,或   NSTreeController。

使用NSDictionaryController。

  

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

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

步骤2:创建NSDictionaryController。

第3步:检查准备内容。

第4步:设为:

enter image description here

步骤5:创建NSTableView。

步骤6:对于第一列,请执行:

enter image description here

第7步:类似地,第二列将value放入Model Key Path

找到running sample here

  

(3)我可以将它绑定到NSTableView中,一边是“Key”,另一边是a   “价值”在另一边?

已经完成。

通过NSSearchField将NSDictionaryController绑定到NSTableView

第1步:绘制NSSearchField。

步骤2:在Predicate选项中将其绑定到NSDicitonaryController。

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

enter image description here

答案 1 :(得分: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];