2015-06-29 5 views
-1

Я хотел бы использовать NSDictionay (я думаю, что это правильный метод), чтобы сохранить данные в классе, который доступен другими классами:Два многомерный массив с объектами

.h

@property (retain, nonatomic) NSArray *NameKey; 
@property (retain, nonatomic) NSArray *DataFields; 
@property (retain, nonatomic) NSDictionary *MDArray; 

.m

@synthesize NameKey; 
@synthesize DataFields; 
@synthesize MDArray; 

- (id) init 
{ 
     NameKey = [NSArray arrayWithObjects:@"DeviceName",nil]; 
     DataFields = [NSArray arrayWithObjects:@"Serial", nil]; 
     MDArray = [NSDictionary dictionaryWithObjects:DataFields forKeys:NameKey]; 
} 

Пара вопросов:

  1. Является ли это правильным методом для создания NSDictionary?

  2. Как вы добавляете/удаляете/изменяете данные. Предполагая, что название было уникальным

Заранее спасибо.

+1

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

+1

Кроме того, использование '@ synhesize' в значительной степени устарело. И почему ваш словарь с именем 'MDArray', а не' mdDictionary'? И вам действительно нужны свойства для двух массивов? Эти данные будут в словаре. – rmaddy

+0

И почему свойство 'nameKey' с типом' NSArray' является единственной формой? И ... Почему никто не читает интродукции перед публикацией на SO? –

ответ

0

Так я решил это был:

devices = [[NSMutableArray alloc] init]; 
dataFields = [[NSArray alloc] initWithObjects:@"Name",@"Type", nil]; 

NSArray *addDevice = [[NSArray alloc] initWithObjects:@"MM-TEST",@"-- --", nil]; 
NSDictionary *infoblock = [[NSMutableDictionary alloc] initWithObjects:addDevice forKeys:dataFields]; 
[devices addObject:infoblock]; 

Кажется работать нормально.

0

Почему бы не использовать современный синтаксис:

MDArray = @{ @"DeviceName": @"Serial" } 

Если вы хотите изменяемую версию вы можете отправить ему mutableCopy сообщения

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