我正在尝试创建一个为我生成发票的应用程序(我的第一个)。最初我的想法是有以下课程:
- 用户(以下所有应用程序数据属于谁)
- 客户(计费对象:姓名、公司名称、BillingAddress、电话等...)
- 任务(发票上的一个项目:名称、描述、HourlyRate 等...)
- 发票(由客户和多个任务组成的最终输出)
我想我可以让用户选择“添加新客户”,这将创建一个客户对象,然后将该对象存储到客户数组中。与“添加新任务”相同,它将创建一个任务对象并将其添加到任务数组中。然后,我将能够创建一个 Invoice 对象,该对象指向客户数组中的某个值和任务数组中的多个任务。
我遇到的问题是我不知道每次有人按下“添加新客户”或“添加新任务”时如何创建一个新对象。我试过做这样的事情:
Customer *customer = [[Customer alloc] init];
[customer setName:@"John Doe"];
[customer setCompanyName:@"John's Swimming Pools"];
[user1 addCustomer:customer];
[customer setName:@"Jane Smith"];
[customer setCompanyName:@"Cupcakes by Jane"];
[user1 addCustomer:customer];
for (int i = 0; i < [[user1 customers] count]; i++) {
NSLog(@"%@",[[[user1 customers] objectAtIndex:i] name]);
}
我意识到这不起作用,因为指向客户的指针被 Jane 覆盖,所以当打印数组时,其中的两个值都说“Jane Smith”。
每次用户决定添加客户/任务时,如何创建指向对象的新指针?还是我要解决这一切都错了,应该对所有内容使用数组而不是类?我觉得这是非常基本的 OOP,我正在努力解决它。任何帮助将不胜感激,谢谢!