1

В приложении iOS, которое я создаю, в настоящее время я управляю списком объектов (Задачи) с помощью NSMutableArray, содержащего несколько объектов NSMutableDictionary для каждой отдельной задачи.Создание пользовательской коллекции пользовательских классов в Objective C

Теперь я хотел бы инкапсулировать логику, которую я пишу, для управления этими задачами в пользовательском классе или классах.

Вот несколько вариантов, я рассматриваю:

  1. Создать один новый класс под названием TaskManager, которая использует описанные выше классы внутренне и выставляет необходимые методы для добавления, удаления, обновления, изменения порядка и т.д.

  2. Создание двух классов - задач и TaskList - которые наследуют от NSMutableDictionary и NSMutableArray соответственно

  3. Создание двух классов - задач и TaskList - которые наследуют NSObject но которые используют другие классы внутри для хранения данных

я сделал некоторые C# развития раньше, но я заинтересован, чтобы получить некоторые советы, для которых подход был бы лучшим в Objective C.

ответ

2

Я хотел бы предложить вариант 4:

  • класс TaskList, который использует NSMutableArray внутренне
  • класс задач, который использует свойства, но не NSMutableDictionary

Или есть причина, по которой вы хотите использовать словарь? Если вы используете обычный класс, вы получите безопасность типов (а также лучшую производительность).

+0

Спасибо. Это имеет смысл. Думаю, я думал об использовании стандартных классов, потому что их можно легко сэкономить на plist. Но я буду рассматривать различные решения для этого. – JaseTheAce

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 

 Смежные вопросы

  • Нет связанных вопросов^_^