如何使用NSArrayController和cocoa绑定在NSTextField中显示平均员工薪水

时间:2010-06-12 13:56:15

标签: cocoa cocoa-bindings nsarraycontroller nstextfield

我是cocoa绑定的新手,所以我尝试创建一个简单的应用程序,它将简单地计算员工薪水的平均值,并使用cocoa绑定在文本字段中显示它。我按照以下步骤操作:

  1. 制作模型类:Person现在有一个属性 -

    @property(readwrite,assign)int salary;

  2. 在应用程序委托类中,我使用如下某些对象初始化了一个可变数组:personArray

    Person *person1 = [[Person alloc] init];
    person1.salary = 5000;
    
    Person *person2 = [[Person alloc] init];
    person2.salary = 15000;
    
    Person *person3 = [[Person alloc] init];
    person3.salary = 7000;
    
    Person *person4 = [[Person alloc] init];
    person4.salary = 9000;
    
    Person *person5 = [[Person alloc] init];
    person5.salary = 11000;
    
    personArray= [[NSMutableArray alloc] initWithObjects:person1, person2, person3, person4, person5,nil];
    
  3. 在IB中,我删除了一个NSArrayController对象,将其模式设置为Class - Person,在属性窗格中添加了键salary。然后在绑定窗格中,将绑定内容数组绑定到ApplicationDelegate类,并将模型关键路径设置为self.personArray

  4. 在窗口上删除了NSTextField。将其值绑定到ArrayController对象。已将控制器密钥指定为 - arrangedObjects。已分配给@avg.salary

  5. 的模型关键路径

    当我执行应用程序时,我发现文本字段中没有显示任何值。

    任何人都可以告诉我可能出错的地方或其他最好的方法来实现它

    谢谢,

    Miraaj

1 个答案:

答案 0 :(得分:0)

上面报告的问题现已解决,我做了以下改进以解决它:

  1. 我在ApplicationDelegate类中声明了 - personArray的属性。

  2. 代替将Person对象直接分配给personArray,我首先将它们分配给临时数组,然后使用:-setValue:forKey:方法将其分配给personArray。

  3. 现在按预期工作:)