在Objective C中创建自定义类的自定义集合

时间:2013-04-11 09:15:53

标签: objective-c collections nsmutablearray nsmutabledictionary

在我正在构建的iOS应用程序中,我正在使用NSMutableArray管理对象列表(任务),该NSMutableArray包含每个单独任务的许多NSMutableDictionary对象。

我现在想要封装我正在编写的用于在自定义类或类中管理这些任务的逻辑。

以下是我正在考虑的几个选项:

  1. 创建一个名为TaskManager的新类,它在内部使用上述类,并公开了添加,删除,更新,重新排序等必要的方法。

  2. 创建两个类 - Task和TaskList - 分别从NSMutableDictionary和NSMutableArray继承

  3. 创建两个类 - Task和TaskList - 它继承自NSObject但在内部使用其他类来存储数据

  4. 之前我已经完成了一些C#开发,但我很想得到一些关于Objective C中哪种方法最好的建议。

2 个答案:

答案 0 :(得分:2)

我建议选项4:

  • 内部使用NSMutableArray的类TaskList
  • 使用属性但没有NSMutableDictionary
  • 的类Task

或者你有没有理由想要使用字典?如果你使用常规课程,你将获得类型安全(以及更好的性能)。

答案 1 :(得分:0)

如果我在你所在的地方,我将创建一个自定义类,它封装了如下所示的类。

<强> TaskManager.h

#import <Foundation/Foundation.h>

@interface TaskManager : NSObject

@property(nonatomic,retain)NSMutableArray *taskList;

-(void)addTaskList:(NSMutableDictionary *)object;

@end


@interface Task : NSObject

@property(nonatomic,retain)NSMutableDictionary *taskDetails;

-(void)setTaskDetailsWithKey:(NSString*)key withValue:(NSString*)value;

@end

<强> TaskManager.m

#import "TaskManager.h"

@implementation TaskManager
@synthesize taskList;

-(id)init
{
    self = [super init];
    if (self) {
        if(!taskList)
            taskList = [[NSMutableArray alloc] init];
    }
    return self;
}

-(void)addTaskList:(NSMutableDictionary *)object
{
    [taskList addObject:object];
}

@end

@implementation Task

@synthesize taskDetails;

-(id)init
{
    self = [super init];
    if (self) {
        if(!taskDetails)
            taskDetails = [[NSMutableDictionary alloc] init];
    }
    return self;
}


-(void)setTaskDetailsWithKey:(NSString*)key withValue:(NSString*)value
{
    [taskDetails setObject:value forKey:key];
}

@end