читать и писать в NSMutableArray со словарем - PullRequest
0 голосов
/ 11 августа 2011

Это кажется довольно простым, но я просто не могу найти способ сделать это где-нибудь. По сути, я строю массив со словарями следующим образом:

NSArray *times = [NSArray arrayWithObjects:@"3pm",@"4pm",@"5pm",nil];
NSDictionary *timesDict = [NSDictionary dictionaryWithObject:times forKey:@"Times"];

NSArray *locations = [NSArray arrayWithObjects:@"Miami", @"New York", @"Las Vegas", nil];
NSDictionary *locationsDict = [NSDictionary dictionaryWithObject:locations forKey:@"Locations"];

[listOfItems addObject:timesDict];
[listOfItems addObject:locationsDict];

И хотел бы динамически добавлять больше времени и мест на основе ввода пользователя.

учитывая, что у меня есть новые переменные, которые содержат новое «время» и новое «местоположение» (оба являются NSString), как я могу добавить их на основе ключа Times / Locations?

В идеале я хотел бы сделать следующее:

[listOfItems addObject:newLocation forkey:@"Locations"];
[listOfItems addObject:newTime forkey:@"Times"];

(что, конечно, не компилируется ....)

А также читать из мест или времен, как это:

NSString * str = чтение из listOfItems, ключ: "Times", atIndex: bla (в произвольной форме:))

Ценю любую помощь. Спасибо!

Ответы [ 4 ]

4 голосов
/ 11 августа 2011

Почему вы используете два отдельных словаря?попробуйте использовать тот, который содержит два массива:

NSMutableArray *times = [NSMutableArray arrayWithObjects:@"3pm",@"4pm",@"5pm",nil];
NSMutableArray *locations = [NSMutableArray arrayWithObjects:@"Miami", @"New York", @"Las Vegas", nil];
NSDictionary *dataDict=[[NSDictionary alloc] initWithObjectsAndKeys:times,@"Times",locations,@"Locations",nil];

Таким образом, вы можете получить доступ к своим массивам с помощью:

[dataDict objectForKey:@"Times"]

Или определенное время по индексу:

[[dataDict objectForKey:@"Times"] objectAtIndex:0];

или добавить значение в массив Times:

[[dataDict objectForKey:@"Times"] addObject:@"Today"];
2 голосов
/ 11 августа 2011

Вам необходимо создать экземпляры NSMutableArray / NSMutableDictionary.После этого вы можете использовать методы, предложенные Диланом Райхом.

2 голосов
/ 11 августа 2011

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

@interface TimesAndLocations : NSObject
{
    //Initialize these in init and release in dealloc
    NSMutableArray *_times;
    NSMutableArray *_locations;
}

//Use these methods to add times and locations
-(void)addTime:(NSString*)time;
-(void)addLocation:(NSString*)location;

//Could add remove methods here as well

@end
2 голосов
/ 11 августа 2011

Как насчет:

[[listOfItems locationsDict] addObject:newLocation];

и

[[listOfItems timesDict] addObject:newTime];
...